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

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

<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/199104">r199104</a>.
https://bugs.webkit.org/show_bug.cgi?id=156301

Still breaks internal builds (Requested by keith_miller on
#webkit).

Reverted changeset:

&quot;We should support the ability to do a non-effectful getById&quot;
https://bugs.webkit.org/show_bug.cgi?id=156116
http://trac.webkit.org/changeset/199104</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCorebuiltinsBuiltinExecutablescpp">trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebuiltinsBuiltinExecutablesh">trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeBytecodeIntrinsicRegistryh">trunk/Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeBytecodeListjson">trunk/Source/JavaScriptCore/bytecode/BytecodeList.json</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeBytecodeUseDefh">trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCodeBlockcpp">trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodePolymorphicAccesscpp">trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodePolymorphicAccessh">trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeStructureStubInfocpp">trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeStructureStubInfoh">trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorcpp">trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorh">trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecompilerNodesCodegencpp">trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJIT32_64cpp">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJIT64cpp">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLLowerDFGToB3cpp">trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITcpp">trunk/Source/JavaScriptCore/jit/JIT.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITh">trunk/Source/JavaScriptCore/jit/JIT.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITInlineCacheGeneratorcpp">trunk/Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITInlineCacheGeneratorh">trunk/Source/JavaScriptCore/jit/JITInlineCacheGenerator.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITInlinesh">trunk/Source/JavaScriptCore/jit/JITInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOperationscpp">trunk/Source/JavaScriptCore/jit/JITOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOperationsh">trunk/Source/JavaScriptCore/jit/JITOperations.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITPropertyAccesscpp">trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITPropertyAccess32_64cpp">trunk/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitRepatchcpp">trunk/Source/JavaScriptCore/jit/Repatch.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitRepatchh">trunk/Source/JavaScriptCore/jit/Repatch.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejsccpp">trunk/Source/JavaScriptCore/jsc.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntDatacpp">trunk/Source/JavaScriptCore/llint/LLIntData.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntSlowPathscpp">trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntSlowPathsh">trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLowLevelInterpreterasm">trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGetterSettercpp">trunk/Source/JavaScriptCore/runtime/GetterSetter.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGetterSetterh">trunk/Source/JavaScriptCore/runtime/GetterSetter.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSTypeh">trunk/Source/JavaScriptCore/runtime/JSType.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePropertySlotcpp">trunk/Source/JavaScriptCore/runtime/PropertySlot.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePropertySloth">trunk/Source/JavaScriptCore/runtime/PropertySlot.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeProxyObjectcpp">trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoretestsstresstrygetbyidjs">trunk/Source/JavaScriptCore/tests/stress/try-get-by-id.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/ChangeLog        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2016-04-06  Commit Queue  &lt;commit-queue@webkit.org&gt;
+
+        Unreviewed, rolling out r199104.
+        https://bugs.webkit.org/show_bug.cgi?id=156301
+
+        Still breaks internal builds (Requested by keith_miller on
+        #webkit).
+
+        Reverted changeset:
+
+        &quot;We should support the ability to do a non-effectful getById&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=156116
+        http://trac.webkit.org/changeset/199104
+
</ins><span class="cx"> 2016-04-06  Keith Miller  &lt;keith_miller@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         RegExp constructor should use Symbol.match and other properties
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebuiltinsBuiltinExecutablescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -35,6 +35,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><ins>+static UnlinkedFunctionExecutable* createExecutableInternal(VM&amp;, const SourceCode&amp;, const Identifier&amp;, ConstructorKind, ConstructAbility);
+
</ins><span class="cx"> BuiltinExecutables::BuiltinExecutables(VM&amp; vm)
</span><span class="cx">     : m_vm(vm)
</span><span class="cx"> #define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, length) , m_##name##Source(makeSource(StringImpl::createFromLiteral(s_##name, length)))
</span><span class="lines">@@ -52,9 +54,9 @@
</span><span class="cx">     case ConstructorKind::None:
</span><span class="cx">         break;
</span><span class="cx">     case ConstructorKind::Base:
</span><del>-        return createExecutable(m_vm, makeSource(baseConstructorCode), name, constructorKind, ConstructAbility::CanConstruct);
</del><ins>+        return createExecutableInternal(m_vm, makeSource(baseConstructorCode), name, constructorKind, ConstructAbility::CanConstruct);
</ins><span class="cx">     case ConstructorKind::Derived:
</span><del>-        return createExecutable(m_vm, makeSource(derivedConstructorCode), name, constructorKind, ConstructAbility::CanConstruct);
</del><ins>+        return createExecutableInternal(m_vm, makeSource(derivedConstructorCode), name, constructorKind, ConstructAbility::CanConstruct);
</ins><span class="cx">     }
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><span class="cx">     return nullptr;
</span><span class="lines">@@ -62,15 +64,15 @@
</span><span class="cx"> 
</span><span class="cx"> UnlinkedFunctionExecutable* BuiltinExecutables::createBuiltinExecutable(const SourceCode&amp; code, const Identifier&amp; name, ConstructAbility constructAbility)
</span><span class="cx"> {
</span><del>-    return createExecutable(m_vm, code, name, ConstructorKind::None, constructAbility);
</del><ins>+    return createExecutableInternal(m_vm, code, name, ConstructorKind::None, constructAbility);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> UnlinkedFunctionExecutable* createBuiltinExecutable(VM&amp; vm, const SourceCode&amp; code, const Identifier&amp; name, ConstructAbility constructAbility)
</span><span class="cx"> {
</span><del>-    return BuiltinExecutables::createExecutable(vm, code, name, ConstructorKind::None, constructAbility);
</del><ins>+    return createExecutableInternal(vm, code, name, ConstructorKind::None, constructAbility);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-UnlinkedFunctionExecutable* BuiltinExecutables::createExecutable(VM&amp; vm, const SourceCode&amp; source, const Identifier&amp; name, ConstructorKind constructorKind, ConstructAbility constructAbility)
</del><ins>+UnlinkedFunctionExecutable* createExecutableInternal(VM&amp; vm, const SourceCode&amp; source, const Identifier&amp; name, ConstructorKind constructorKind, ConstructAbility constructAbility)
</ins><span class="cx"> {
</span><span class="cx">     JSTextPosition positionBeforeLastNewline;
</span><span class="cx">     ParserError error;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebuiltinsBuiltinExecutablesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -52,7 +52,6 @@
</span><span class="cx"> 
</span><span class="cx">     UnlinkedFunctionExecutable* createDefaultConstructor(ConstructorKind, const Identifier&amp; name);
</span><span class="cx"> 
</span><del>-    JS_EXPORT_PRIVATE static UnlinkedFunctionExecutable* createExecutable(VM&amp;, const SourceCode&amp;, const Identifier&amp;, ConstructorKind, ConstructAbility);
</del><span class="cx"> private:
</span><span class="cx">     void finalize(Handle&lt;Unknown&gt;, void* context) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeIntrinsicRegistryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> #define JSC_COMMON_BYTECODE_INTRINSIC_FUNCTIONS_EACH_NAME(macro) \
</span><span class="cx">     macro(assert) \
</span><span class="cx">     macro(isObject) \
</span><del>-    macro(tryGetById) \
</del><span class="cx">     macro(putByValDirect) \
</span><span class="cx">     macro(toString)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeListjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/BytecodeList.json (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeList.json        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeList.json        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -57,7 +57,6 @@
</span><span class="cx">             { &quot;name&quot; : &quot;op_is_object_or_null&quot;, &quot;length&quot; : 3 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_is_function&quot;, &quot;length&quot; : 3 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_in&quot;, &quot;length&quot; : 4 },
</span><del>-            { &quot;name&quot; : &quot;op_try_get_by_id&quot;, &quot;length&quot; : 4 },
</del><span class="cx">             { &quot;name&quot; : &quot;op_get_by_id&quot;, &quot;length&quot; : 9  },
</span><span class="cx">             { &quot;name&quot; : &quot;op_get_array_length&quot;, &quot;length&quot; : 9 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_put_by_id&quot;, &quot;length&quot; : 9 },
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeUseDefh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -143,7 +143,6 @@
</span><span class="cx">     case op_resolve_scope:
</span><span class="cx">     case op_get_from_scope:
</span><span class="cx">     case op_to_primitive:
</span><del>-    case op_try_get_by_id:
</del><span class="cx">     case op_get_by_id:
</span><span class="cx">     case op_get_array_length:
</span><span class="cx">     case op_typeof:
</span><span class="lines">@@ -368,7 +367,6 @@
</span><span class="cx">     case op_tail_call:
</span><span class="cx">     case op_call_eval:
</span><span class="cx">     case op_construct:
</span><del>-    case op_try_get_by_id:
</del><span class="cx">     case op_get_by_id:
</span><span class="cx">     case op_get_array_length:
</span><span class="cx">     case op_overrides_has_instance:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -1095,14 +1095,6 @@
</span><span class="cx">             printBinaryOp(out, exec, location, it, &quot;in&quot;);
</span><span class="cx">             break;
</span><span class="cx">         }
</span><del>-        case op_try_get_by_id: {
-            int r0 = (++it)-&gt;u.operand;
-            int r1 = (++it)-&gt;u.operand;
-            int id0 = (++it)-&gt;u.operand;
-            printLocationAndOp(out, exec, location, it, &quot;try_get_by_id&quot;);
-            out.printf(&quot;%s, %s, %s&quot;, registerName(r0).data(), registerName(r1).data(), idName(id0, identifier(id0)).data());
-            break;
-        }
</del><span class="cx">         case op_get_by_id:
</span><span class="cx">         case op_get_array_length: {
</span><span class="cx">             printGetByIdOp(out, exec, location, it);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodePolymorphicAccesscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -159,26 +159,6 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-std::unique_ptr&lt;AccessCase&gt; AccessCase::tryGet(
-    VM&amp; vm, JSCell* owner, AccessType type, PropertyOffset offset, Structure* structure,
-    const ObjectPropertyConditionSet&amp; conditionSet, bool viaProxy, WatchpointSet* additionalSet)
-{
-    std::unique_ptr&lt;AccessCase&gt; result(new AccessCase());
-
-    result-&gt;m_type = type;
-    result-&gt;m_offset = offset;
-    result-&gt;m_structure.set(vm, owner, structure);
-    result-&gt;m_conditionSet = conditionSet;
-
-    if (viaProxy || additionalSet) {
-        result-&gt;m_rareData = std::make_unique&lt;RareData&gt;();
-        result-&gt;m_rareData-&gt;viaProxy = viaProxy;
-        result-&gt;m_rareData-&gt;additionalSet = additionalSet;
-    }
-
-    return result;
-}
-
</del><span class="cx"> std::unique_ptr&lt;AccessCase&gt; AccessCase::get(
</span><span class="cx">     VM&amp; vm, JSCell* owner, AccessType type, PropertyOffset offset, Structure* structure,
</span><span class="cx">     const ObjectPropertyConditionSet&amp; conditionSet, bool viaProxy, WatchpointSet* additionalSet,
</span><span class="lines">@@ -705,7 +685,6 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     case Load:
</span><del>-    case GetGetter:
</del><span class="cx">     case Getter:
</span><span class="cx">     case Setter:
</span><span class="cx">     case CustomValueGetter:
</span><span class="lines">@@ -741,7 +720,7 @@
</span><span class="cx"> 
</span><span class="cx">         GPRReg loadedValueGPR = InvalidGPRReg;
</span><span class="cx">         if (m_type != CustomValueGetter &amp;&amp; m_type != CustomAccessorGetter &amp;&amp; m_type != CustomValueSetter &amp;&amp; m_type != CustomAccessorSetter) {
</span><del>-            if (m_type == Load || m_type == GetGetter)
</del><ins>+            if (m_type == Load)
</ins><span class="cx">                 loadedValueGPR = valueRegs.payloadGPR();
</span><span class="cx">             else
</span><span class="cx">                 loadedValueGPR = scratchGPR;
</span><span class="lines">@@ -760,7 +739,7 @@
</span><span class="cx">             jit.load64(
</span><span class="cx">                 CCallHelpers::Address(storageGPR, offsetRelativeToBase(m_offset)), loadedValueGPR);
</span><span class="cx"> #else
</span><del>-            if (m_type == Load || m_type == GetGetter) {
</del><ins>+            if (m_type == Load) {
</ins><span class="cx">                 jit.load32(
</span><span class="cx">                     CCallHelpers::Address(storageGPR, offsetRelativeToBase(m_offset) + TagOffset),
</span><span class="cx">                     valueRegs.tagGPR());
</span><span class="lines">@@ -771,7 +750,7 @@
</span><span class="cx"> #endif
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (m_type == Load || m_type == GetGetter) {
</del><ins>+        if (m_type == Load) {
</ins><span class="cx">             state.succeed();
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="lines">@@ -1642,9 +1621,6 @@
</span><span class="cx">     case AccessCase::Miss:
</span><span class="cx">         out.print(&quot;Miss&quot;);
</span><span class="cx">         return;
</span><del>-    case AccessCase::GetGetter:
-        out.print(&quot;GetGetter&quot;);
-        return;
</del><span class="cx">     case AccessCase::Getter:
</span><span class="cx">         out.print(&quot;Getter&quot;);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodePolymorphicAccessh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -57,7 +57,6 @@
</span><span class="cx">         Transition,
</span><span class="cx">         Replace,
</span><span class="cx">         Miss,
</span><del>-        GetGetter,
</del><span class="cx">         Getter,
</span><span class="cx">         Setter,
</span><span class="cx">         CustomValueGetter,
</span><span class="lines">@@ -71,12 +70,78 @@
</span><span class="cx">         StringLength
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    static std::unique_ptr&lt;AccessCase&gt; tryGet(
-        VM&amp;, JSCell* owner, AccessType, PropertyOffset, Structure*,
-        const ObjectPropertyConditionSet&amp; = ObjectPropertyConditionSet(),
-        bool viaProxy = false,
-        WatchpointSet* additionalSet = nullptr);
</del><ins>+    static bool isGet(AccessType type)
+    {
+        switch (type) {
+        case Transition:
+        case Replace:
+        case Setter:
+        case CustomValueSetter:
+        case CustomAccessorSetter:
+        case InHit:
+        case InMiss:
+            return false;
+        case Load:
+        case MegamorphicLoad:
+        case Miss:
+        case Getter:
+        case CustomValueGetter:
+        case CustomAccessorGetter:
+        case IntrinsicGetter:
+        case ArrayLength:
+        case StringLength:
+            return true;
+        }
+    }
</ins><span class="cx"> 
</span><ins>+    static bool isPut(AccessType type)
+    {
+        switch (type) {
+        case Load:
+        case MegamorphicLoad:
+        case Miss:
+        case Getter:
+        case CustomValueGetter:
+        case CustomAccessorGetter:
+        case IntrinsicGetter:
+        case InHit:
+        case InMiss:
+        case ArrayLength:
+        case StringLength:
+            return false;
+        case Transition:
+        case Replace:
+        case Setter:
+        case CustomValueSetter:
+        case CustomAccessorSetter:
+            return true;
+        }
+    }
+
+    static bool isIn(AccessType type)
+    {
+        switch (type) {
+        case Load:
+        case MegamorphicLoad:
+        case Miss:
+        case Getter:
+        case CustomValueGetter:
+        case CustomAccessorGetter:
+        case IntrinsicGetter:
+        case Transition:
+        case Replace:
+        case Setter:
+        case CustomValueSetter:
+        case CustomAccessorSetter:
+        case ArrayLength:
+        case StringLength:
+            return false;
+        case InHit:
+        case InMiss:
+            return true;
+        }
+    }
+
</ins><span class="cx">     static std::unique_ptr&lt;AccessCase&gt; get(
</span><span class="cx">         VM&amp;, JSCell* owner, AccessType, PropertyOffset, Structure*,
</span><span class="cx">         const ObjectPropertyConditionSet&amp; = ObjectPropertyConditionSet(),
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeStructureStubInfocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -148,11 +148,8 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     switch (accessType) {
</span><del>-    case AccessType::GetPure:
-        resetGetByID(codeBlock, *this, GetByIDKind::Pure);
-        break;
</del><span class="cx">     case AccessType::Get:
</span><del>-        resetGetByID(codeBlock, *this, GetByIDKind::Normal);
</del><ins>+        resetGetByID(codeBlock, *this);
</ins><span class="cx">         break;
</span><span class="cx">     case AccessType::Put:
</span><span class="cx">         resetPutByID(codeBlock, *this);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeStructureStubInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -47,7 +47,6 @@
</span><span class="cx"> 
</span><span class="cx"> enum class AccessType : int8_t {
</span><span class="cx">     Get,
</span><del>-    GetPure,
</del><span class="cx">     Put,
</span><span class="cx">     In
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -2360,17 +2360,6 @@
</span><span class="cx">     return dst;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RegisterID* BytecodeGenerator::emitTryGetById(RegisterID* dst, RegisterID* base, const Identifier&amp; property)
-{
-    ASSERT_WITH_MESSAGE(!parseIndex(property), &quot;Indexed properties are not supported with tryGetById.&quot;);
-
-    emitOpcode(op_try_get_by_id);
-    instructions().append(kill(dst));
-    instructions().append(base-&gt;index());
-    instructions().append(addConstant(property));
-    return dst;
-}
-
</del><span class="cx"> RegisterID* BytecodeGenerator::emitGetById(RegisterID* dst, RegisterID* base, const Identifier&amp; property)
</span><span class="cx"> {
</span><span class="cx">     ASSERT_WITH_MESSAGE(!parseIndex(property), &quot;Indexed properties should be handled with get_by_val.&quot;);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -540,7 +540,6 @@
</span><span class="cx">         RegisterID* emitTypeOf(RegisterID* dst, RegisterID* src) { return emitUnaryOp(op_typeof, dst, src); }
</span><span class="cx">         RegisterID* emitIn(RegisterID* dst, RegisterID* property, RegisterID* base) { return emitBinaryOp(op_in, dst, property, base, OperandTypes()); }
</span><span class="cx"> 
</span><del>-        RegisterID* emitTryGetById(RegisterID* dst, RegisterID* base, const Identifier&amp; property);
</del><span class="cx">         RegisterID* emitGetById(RegisterID* dst, RegisterID* base, const Identifier&amp; property);
</span><span class="cx">         RegisterID* emitPutById(RegisterID* base, const Identifier&amp; property, RegisterID* value);
</span><span class="cx">         RegisterID* emitDirectPutById(RegisterID* base, const Identifier&amp; property, RegisterID* value, PropertyNode::PutType);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerNodesCodegencpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -842,21 +842,6 @@
</span><span class="cx">     return generator.moveToDestinationIfNeeded(dst, generator.emitDirectPutByVal(base.get(), index.get(), value.get()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RegisterID* BytecodeIntrinsicNode::emit_intrinsic_tryGetById(BytecodeGenerator&amp; generator, RegisterID* dst)
-{
-    ArgumentListNode* node = m_args-&gt;m_listNode;
-    RefPtr&lt;RegisterID&gt; base = generator.emitNode(node);
-    node = node-&gt;m_next;
-
-    // Since this is a builtin we expect the creator to use a string literal as the second argument.
-    ASSERT(node-&gt;m_expr-&gt;isString());
-    const Identifier&amp; ident = static_cast&lt;StringNode*&gt;(node-&gt;m_expr)-&gt;value();
-    ASSERT(!node-&gt;m_next);
-
-    RegisterID* finalDest = generator.finalDestination(dst);
-    return generator.emitTryGetById(finalDest, base.get(), ident);
-}
-
</del><span class="cx"> RegisterID* BytecodeIntrinsicNode::emit_intrinsic_toString(BytecodeGenerator&amp; generator, RegisterID* dst)
</span><span class="cx"> {
</span><span class="cx">     ArgumentListNode* node = m_args-&gt;m_listNode;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJIT32_64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -194,7 +194,7 @@
</span><span class="cx">     JITGetByIdGenerator gen(
</span><span class="cx">         m_jit.codeBlock(), codeOrigin, callSite, usedRegisters,
</span><span class="cx">         JSValueRegs(baseTagGPROrNone, basePayloadGPR),
</span><del>-        JSValueRegs(resultTagGPR, resultPayloadGPR), AccessType::Get);
</del><ins>+        JSValueRegs(resultTagGPR, resultPayloadGPR));
</ins><span class="cx">     
</span><span class="cx">     gen.generateFastPath(m_jit);
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJIT64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -164,7 +164,7 @@
</span><span class="cx">     }
</span><span class="cx">     JITGetByIdGenerator gen(
</span><span class="cx">         m_jit.codeBlock(), codeOrigin, callSite, usedRegisters, JSValueRegs(baseGPR),
</span><del>-        JSValueRegs(resultGPR), AccessType::Get);
</del><ins>+        JSValueRegs(resultGPR));
</ins><span class="cx">     gen.generateFastPath(m_jit);
</span><span class="cx">     
</span><span class="cx">     JITCompiler::JumpList slowCases;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLLowerDFGToB3cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -7331,7 +7331,7 @@
</span><span class="cx">                 auto generator = Box&lt;JITGetByIdGenerator&gt;::create(
</span><span class="cx">                     jit.codeBlock(), node-&gt;origin.semantic, callSiteIndex,
</span><span class="cx">                     params.unavailableRegisters(), JSValueRegs(params[1].gpr()),
</span><del>-                    JSValueRegs(params[0].gpr()), AccessType::Get);
</del><ins>+                    JSValueRegs(params[0].gpr()));
</ins><span class="cx"> 
</span><span class="cx">                 generator-&gt;generateFastPath(jit);
</span><span class="cx">                 CCallHelpers::Label done = jit.label();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JIT.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JIT.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/jit/JIT.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -228,7 +228,6 @@
</span><span class="cx">         DEFINE_OP(op_get_scope)
</span><span class="cx">         DEFINE_OP(op_eq)
</span><span class="cx">         DEFINE_OP(op_eq_null)
</span><del>-        DEFINE_OP(op_try_get_by_id)
</del><span class="cx">         case op_get_array_length:
</span><span class="cx">         DEFINE_OP(op_get_by_id)
</span><span class="cx">         DEFINE_OP(op_get_by_val)
</span><span class="lines">@@ -407,7 +406,6 @@
</span><span class="cx">         DEFINE_SLOWCASE_OP(op_create_this)
</span><span class="cx">         DEFINE_SLOWCASE_OP(op_div)
</span><span class="cx">         DEFINE_SLOWCASE_OP(op_eq)
</span><del>-        DEFINE_SLOWCASE_OP(op_try_get_by_id)
</del><span class="cx">         case op_get_array_length:
</span><span class="cx">         DEFINE_SLOWCASE_OP(op_get_by_id)
</span><span class="cx">         DEFINE_SLOWCASE_OP(op_get_by_val)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JIT.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JIT.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/jit/JIT.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -502,7 +502,6 @@
</span><span class="cx">         void emit_op_get_scope(Instruction*);
</span><span class="cx">         void emit_op_eq(Instruction*);
</span><span class="cx">         void emit_op_eq_null(Instruction*);
</span><del>-        void emit_op_try_get_by_id(Instruction*);
</del><span class="cx">         void emit_op_get_by_id(Instruction*);
</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="lines">@@ -615,7 +614,6 @@
</span><span class="cx">         void emitSlow_op_div(Instruction*, Vector&lt;SlowCaseEntry&gt;::iterator&amp;);
</span><span class="cx">         void emitSlow_op_eq(Instruction*, Vector&lt;SlowCaseEntry&gt;::iterator&amp;);
</span><span class="cx">         void emitSlow_op_get_callee(Instruction*, Vector&lt;SlowCaseEntry&gt;::iterator&amp;);
</span><del>-        void emitSlow_op_try_get_by_id(Instruction*, Vector&lt;SlowCaseEntry&gt;::iterator&amp;);
</del><span class="cx">         void emitSlow_op_get_by_id(Instruction*, Vector&lt;SlowCaseEntry&gt;::iterator&amp;);
</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="lines">@@ -740,10 +738,8 @@
</span><span class="cx">         MacroAssembler::Call callOperation(V_JITOperation_EC, JSCell*);
</span><span class="cx">         MacroAssembler::Call callOperation(J_JITOperation_EJ, int, GPRReg);
</span><span class="cx"> #if USE(JSVALUE64)
</span><del>-        MacroAssembler::Call callOperation(J_JITOperation_ESsiJI, int, StructureStubInfo*, GPRReg, UniquedStringImpl*);
</del><span class="cx">         MacroAssembler::Call callOperation(WithProfileTag, J_JITOperation_ESsiJI, int, StructureStubInfo*, GPRReg, UniquedStringImpl*);
</span><span class="cx"> #else
</span><del>-        MacroAssembler::Call callOperation(J_JITOperation_ESsiJI, int, StructureStubInfo*, GPRReg, GPRReg, UniquedStringImpl*);
</del><span class="cx">         MacroAssembler::Call callOperation(WithProfileTag, J_JITOperation_ESsiJI, int, StructureStubInfo*, GPRReg, GPRReg, UniquedStringImpl*);
</span><span class="cx"> #endif
</span><span class="cx">         MacroAssembler::Call callOperation(J_JITOperation_EJIdc, int, GPRReg, const Identifier*);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITInlineCacheGeneratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -104,9 +104,9 @@
</span><span class="cx"> 
</span><span class="cx"> JITGetByIdGenerator::JITGetByIdGenerator(
</span><span class="cx">     CodeBlock* codeBlock, CodeOrigin codeOrigin, CallSiteIndex callSite, const RegisterSet&amp; usedRegisters,
</span><del>-    JSValueRegs base, JSValueRegs value, AccessType accessType)
</del><ins>+    JSValueRegs base, JSValueRegs value)
</ins><span class="cx">     : JITByIdGenerator(
</span><del>-        codeBlock, codeOrigin, callSite, accessType, usedRegisters, base, value)
</del><ins>+        codeBlock, codeOrigin, callSite, AccessType::Get, usedRegisters, base, value)
</ins><span class="cx"> {
</span><span class="cx">     RELEASE_ASSERT(base.payloadGPR() != value.tagGPR());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITInlineCacheGeneratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITInlineCacheGenerator.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITInlineCacheGenerator.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/jit/JITInlineCacheGenerator.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx"> 
</span><span class="cx">     JITGetByIdGenerator(
</span><span class="cx">         CodeBlock*, CodeOrigin, CallSiteIndex, const RegisterSet&amp; usedRegisters, JSValueRegs base,
</span><del>-        JSValueRegs value, AccessType);
</del><ins>+        JSValueRegs value);
</ins><span class="cx">     
</span><span class="cx">     void generateFastPath(MacroAssembler&amp;);
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITInlines.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITInlines.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/jit/JITInlines.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -459,12 +459,6 @@
</span><span class="cx">     return appendCallWithExceptionCheck(operation);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(J_JITOperation_ESsiJI operation, int dst, StructureStubInfo* stubInfo, GPRReg arg1, UniquedStringImpl* uid)
-{
-    setupArgumentsWithExecState(TrustedImmPtr(stubInfo), arg1, TrustedImmPtr(uid));
-    return appendCallWithExceptionCheckSetJSValueResult(operation, dst);
-}
-
</del><span class="cx"> ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(JIT::WithProfileTag, J_JITOperation_ESsiJI operation, int dst, StructureStubInfo* stubInfo, GPRReg arg1, UniquedStringImpl* uid)
</span><span class="cx"> {
</span><span class="cx">     setupArgumentsWithExecState(TrustedImmPtr(stubInfo), arg1, TrustedImmPtr(uid));
</span><span class="lines">@@ -648,12 +642,6 @@
</span><span class="cx">     return appendCallWithExceptionCheckSetJSValueResult(operation, dst);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(J_JITOperation_ESsiJI operation, int dst, StructureStubInfo* stubInfo, GPRReg arg1Tag, GPRReg arg1Payload, UniquedStringImpl* uid)
-{
-    setupArgumentsWithExecState(TrustedImmPtr(stubInfo), arg1Payload, arg1Tag, TrustedImmPtr(uid));
-    return appendCallWithExceptionCheckSetJSValueResult(operation, dst);
-}
-
</del><span class="cx"> ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(JIT::WithProfileTag, J_JITOperation_ESsiJI operation, int dst, StructureStubInfo* stubInfo, GPRReg arg1Tag, GPRReg arg1Payload, UniquedStringImpl* uid)
</span><span class="cx"> {
</span><span class="cx">     setupArgumentsWithExecState(TrustedImmPtr(stubInfo), arg1Payload, arg1Tag, TrustedImmPtr(uid));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOperations.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -154,36 +154,6 @@
</span><span class="cx">     return missingArgCount;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue JIT_OPERATION operationTryGetById(ExecState* exec, StructureStubInfo* stubInfo, EncodedJSValue base, UniquedStringImpl* uid)
-{
-    VM* vm = &amp;exec-&gt;vm();
-    NativeCallFrameTracer tracer(vm, exec);
-    Identifier ident = Identifier::fromUid(vm, uid);
-    stubInfo-&gt;tookSlowPath = true;
-
-    JSValue baseValue = JSValue::decode(base);
-    PropertySlot slot(baseValue, PropertySlot::InternalMethodType::VMInquiry);
-    baseValue.getPropertySlot(exec, ident, slot);
-
-    return JSValue::encode(slot.getPureResult());
-}
-
-EncodedJSValue JIT_OPERATION operationTryGetByIdOptimize(ExecState* exec, StructureStubInfo* stubInfo, EncodedJSValue base, UniquedStringImpl* uid)
-{
-    VM* vm = &amp;exec-&gt;vm();
-    NativeCallFrameTracer tracer(vm, exec);
-    Identifier ident = Identifier::fromUid(vm, uid);
-
-    JSValue baseValue = JSValue::decode(base);
-    PropertySlot slot(baseValue, PropertySlot::InternalMethodType::VMInquiry);
-
-    baseValue.getPropertySlot(exec, ident, slot);
-    if (stubInfo-&gt;considerCaching() &amp;&amp; !slot.isTaintedByProxy() &amp;&amp; (slot.isCacheableValue() || slot.isCacheableGetter() || slot.isUnset()))
-        repatchGetByID(exec, baseValue, ident, slot, *stubInfo, GetByIDKind::Pure);
-
-    return JSValue::encode(slot.getPureResult());
-}
-
</del><span class="cx"> EncodedJSValue JIT_OPERATION operationGetById(ExecState* exec, StructureStubInfo* stubInfo, EncodedJSValue base, UniquedStringImpl* uid)
</span><span class="cx"> {
</span><span class="cx">     VM* vm = &amp;exec-&gt;vm();
</span><span class="lines">@@ -219,7 +189,7 @@
</span><span class="cx">     
</span><span class="cx">     bool hasResult = baseValue.getPropertySlot(exec, ident, slot);
</span><span class="cx">     if (stubInfo-&gt;considerCaching())
</span><del>-        repatchGetByID(exec, baseValue, ident, slot, *stubInfo, GetByIDKind::Normal);
</del><ins>+        repatchGetByID(exec, baseValue, ident, slot, *stubInfo);
</ins><span class="cx">     
</span><span class="cx">     return JSValue::encode(hasResult? slot.getValue(exec, ident) : jsUndefined());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOperationsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOperations.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOperations.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/jit/JITOperations.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -287,10 +287,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> int32_t JIT_OPERATION operationCallArityCheck(ExecState*) WTF_INTERNAL;
</span><span class="cx"> int32_t JIT_OPERATION operationConstructArityCheck(ExecState*) WTF_INTERNAL;
</span><del>-EncodedJSValue JIT_OPERATION operationTryGetById(ExecState*, StructureStubInfo*, EncodedJSValue, UniquedStringImpl*) WTF_INTERNAL;
-EncodedJSValue JIT_OPERATION operationTryGetByIdOptimize(ExecState*, StructureStubInfo*, EncodedJSValue, UniquedStringImpl*) WTF_INTERNAL;
</del><span class="cx"> EncodedJSValue JIT_OPERATION operationGetById(ExecState*, StructureStubInfo*, EncodedJSValue, UniquedStringImpl*) WTF_INTERNAL;
</span><span class="cx"> EncodedJSValue JIT_OPERATION operationGetByIdGeneric(ExecState*, EncodedJSValue, UniquedStringImpl*) WTF_INTERNAL;
</span><ins>+EncodedJSValue JIT_OPERATION operationGetByIdBuildList(ExecState*, StructureStubInfo*, EncodedJSValue, UniquedStringImpl*) WTF_INTERNAL;
</ins><span class="cx"> EncodedJSValue JIT_OPERATION operationGetByIdOptimize(ExecState*, StructureStubInfo*, EncodedJSValue, UniquedStringImpl*) WTF_INTERNAL;
</span><span class="cx"> EncodedJSValue JIT_OPERATION operationInOptimize(ExecState*, StructureStubInfo*, JSCell*, UniquedStringImpl*) WTF_INTERNAL;
</span><span class="cx"> EncodedJSValue JIT_OPERATION operationIn(ExecState*, StructureStubInfo*, JSCell*, UniquedStringImpl*) WTF_INTERNAL;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITPropertyAccesscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -213,7 +213,7 @@
</span><span class="cx"> 
</span><span class="cx">     JITGetByIdGenerator gen(
</span><span class="cx">         m_codeBlock, CodeOrigin(m_bytecodeOffset), CallSiteIndex(m_bytecodeOffset), RegisterSet::stubUnavailableRegisters(),
</span><del>-        JSValueRegs(regT0), JSValueRegs(regT0), AccessType::Get);
</del><ins>+        JSValueRegs(regT0), JSValueRegs(regT0));
</ins><span class="cx">     gen.generateFastPath(*this);
</span><span class="cx"> 
</span><span class="cx">     fastDoneCase = jump();
</span><span class="lines">@@ -531,43 +531,6 @@
</span><span class="cx">     callOperation(operationDeleteById, dst, regT0, &amp;m_codeBlock-&gt;identifier(property));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_try_get_by_id(Instruction* currentInstruction)
-{
-    int resultVReg = currentInstruction[1].u.operand;
-    int baseVReg = currentInstruction[2].u.operand;
-
-    emitGetVirtualRegister(baseVReg, regT0);
-
-    emitJumpSlowCaseIfNotJSCell(regT0, baseVReg);
-
-    JITGetByIdGenerator gen(
-        m_codeBlock, CodeOrigin(m_bytecodeOffset), CallSiteIndex(m_bytecodeOffset), RegisterSet::stubUnavailableRegisters(),
-        JSValueRegs(regT0), JSValueRegs(regT0), AccessType::GetPure);
-    gen.generateFastPath(*this);
-    addSlowCase(gen.slowPathJump());
-    m_getByIds.append(gen);
-    
-    emitPutVirtualRegister(resultVReg);
-}
-
-void JIT::emitSlow_op_try_get_by_id(Instruction* currentInstruction, Vector&lt;SlowCaseEntry&gt;::iterator&amp; iter)
-{
-    int resultVReg = currentInstruction[1].u.operand;
-    int baseVReg = currentInstruction[2].u.operand;
-    const Identifier* ident = &amp;(m_codeBlock-&gt;identifier(currentInstruction[3].u.operand));
-
-    linkSlowCaseIfNotJSCell(iter, baseVReg);
-    linkSlowCase(iter);
-
-    JITGetByIdGenerator&amp; gen = m_getByIds[m_getByIdIndex++];
-
-    Label coldPathBegin = label();
-
-    Call call = callOperation(operationTryGetByIdOptimize, resultVReg, gen.stubInfo(), regT0, ident-&gt;impl());
-    
-    gen.reportSlowPathCall(coldPathBegin, call);
-}
-
</del><span class="cx"> void JIT::emit_op_get_by_id(Instruction* currentInstruction)
</span><span class="cx"> {
</span><span class="cx">     int resultVReg = currentInstruction[1].u.operand;
</span><span class="lines">@@ -583,7 +546,7 @@
</span><span class="cx"> 
</span><span class="cx">     JITGetByIdGenerator gen(
</span><span class="cx">         m_codeBlock, CodeOrigin(m_bytecodeOffset), CallSiteIndex(m_bytecodeOffset), RegisterSet::stubUnavailableRegisters(),
</span><del>-        JSValueRegs(regT0), JSValueRegs(regT0), AccessType::Get);
</del><ins>+        JSValueRegs(regT0), JSValueRegs(regT0));
</ins><span class="cx">     gen.generateFastPath(*this);
</span><span class="cx">     addSlowCase(gen.slowPathJump());
</span><span class="cx">     m_getByIds.append(gen);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITPropertyAccess32_64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -282,7 +282,7 @@
</span><span class="cx"> 
</span><span class="cx">     JITGetByIdGenerator gen(
</span><span class="cx">         m_codeBlock, CodeOrigin(m_bytecodeOffset), CallSiteIndex(currentInstruction), RegisterSet::stubUnavailableRegisters(),
</span><del>-        JSValueRegs::payloadOnly(regT0), JSValueRegs(regT1, regT0), AccessType::Get);
</del><ins>+        JSValueRegs::payloadOnly(regT0), JSValueRegs(regT1, regT0));
</ins><span class="cx">     gen.generateFastPath(*this);
</span><span class="cx"> 
</span><span class="cx">     fastDoneCase = jump();
</span><span class="lines">@@ -573,43 +573,6 @@
</span><span class="cx">     m_byValInstructionIndex++;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_try_get_by_id(Instruction* currentInstruction)
-{
-    int dst = currentInstruction[1].u.operand;
-    int base = currentInstruction[2].u.operand;
-
-    emitLoad(base, regT1, regT0);
-    emitJumpSlowCaseIfNotJSCell(base, regT1);
-
-    JITGetByIdGenerator gen(
-        m_codeBlock, CodeOrigin(m_bytecodeOffset), CallSiteIndex(currentInstruction), RegisterSet::stubUnavailableRegisters(),
-        JSValueRegs::payloadOnly(regT0), JSValueRegs(regT1, regT0), AccessType::GetPure);
-    gen.generateFastPath(*this);
-    addSlowCase(gen.slowPathJump());
-    m_getByIds.append(gen);
-    
-    emitStore(dst, regT1, regT0);
-}
-
-void JIT::emitSlow_op_try_get_by_id(Instruction* currentInstruction, Vector&lt;SlowCaseEntry&gt;::iterator&amp; iter)
-{
-    int resultVReg = currentInstruction[1].u.operand;
-    int baseVReg = currentInstruction[2].u.operand;
-    const Identifier* ident = &amp;(m_codeBlock-&gt;identifier(currentInstruction[3].u.operand));
-
-    linkSlowCaseIfNotJSCell(iter, baseVReg);
-    linkSlowCase(iter);
-
-    JITGetByIdGenerator&amp; gen = m_getByIds[m_getByIdIndex++];
-
-    Label coldPathBegin = label();
-
-    Call call = callOperation(operationTryGetByIdOptimize, resultVReg, gen.stubInfo(), regT1, regT0, ident-&gt;impl());
-    
-    gen.reportSlowPathCall(coldPathBegin, call);
-}
-
-
</del><span class="cx"> void JIT::emit_op_get_by_id(Instruction* currentInstruction)
</span><span class="cx"> {
</span><span class="cx">     int dst = currentInstruction[1].u.operand;
</span><span class="lines">@@ -624,7 +587,7 @@
</span><span class="cx"> 
</span><span class="cx">     JITGetByIdGenerator gen(
</span><span class="cx">         m_codeBlock, CodeOrigin(m_bytecodeOffset), CallSiteIndex(currentInstruction), RegisterSet::stubUnavailableRegisters(),
</span><del>-        JSValueRegs::payloadOnly(regT0), JSValueRegs(regT1, regT0), AccessType::Get);
</del><ins>+        JSValueRegs::payloadOnly(regT0), JSValueRegs(regT1, regT0));
</ins><span class="cx">     gen.generateFastPath(*this);
</span><span class="cx">     addSlowCase(gen.slowPathJump());
</span><span class="cx">     m_getByIds.append(gen);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitRepatchcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/Repatch.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/Repatch.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/jit/Repatch.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx"> 
</span><span class="cx"> static void repatchByIdSelfAccess(
</span><span class="cx">     CodeBlock* codeBlock, StructureStubInfo&amp; stubInfo, Structure* structure,
</span><del>-    PropertyOffset offset, const FunctionPtr&amp; slowPathFunction,
</del><ins>+    PropertyOffset offset, const FunctionPtr &amp;slowPathFunction,
</ins><span class="cx">     bool compact)
</span><span class="cx"> {
</span><span class="cx">     // Only optimize once!
</span><span class="lines">@@ -213,22 +213,8 @@
</span><span class="cx">     return Options::forceICFailure();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline J_JITOperation_ESsiJI appropriateOptimizingGetByIdFunction(GetByIDKind kind)
</del><ins>+static InlineCacheAction tryCacheGetByID(ExecState* exec, JSValue baseValue, const Identifier&amp; propertyName, const PropertySlot&amp; slot, StructureStubInfo&amp; stubInfo)
</ins><span class="cx"> {
</span><del>-    if (kind == GetByIDKind::Normal)
-        return operationGetByIdOptimize;
-    return operationTryGetByIdOptimize;
-}
-
-inline J_JITOperation_ESsiJI appropriateGenericGetByIdFunction(GetByIDKind kind)
-{
-    if (kind == GetByIDKind::Normal)
-        return operationGetById;
-    return operationTryGetById;
-}
-
-static InlineCacheAction tryCacheGetByID(ExecState* exec, JSValue baseValue, const Identifier&amp; propertyName, const PropertySlot&amp; slot, StructureStubInfo&amp; stubInfo, GetByIDKind kind)
-{
</del><span class="cx">     if (forceICFailure(exec))
</span><span class="cx">         return GiveUpOnCache;
</span><span class="cx">     
</span><span class="lines">@@ -276,7 +262,7 @@
</span><span class="cx">             &amp;&amp; !structure-&gt;needImpurePropertyWatchpoint()
</span><span class="cx">             &amp;&amp; !loadTargetFromProxy) {
</span><span class="cx">             structure-&gt;startWatchingPropertyForReplacements(vm, slot.cachedOffset());
</span><del>-            repatchByIdSelfAccess(codeBlock, stubInfo, structure, slot.cachedOffset(), appropriateOptimizingGetByIdFunction(kind), true);
</del><ins>+            repatchByIdSelfAccess(codeBlock, stubInfo, structure, slot.cachedOffset(), operationGetByIdOptimize, true);
</ins><span class="cx">             stubInfo.initGetByIdSelf(codeBlock, structure, slot.cachedOffset());
</span><span class="cx">             return RetryCacheLater;
</span><span class="cx">         }
</span><span class="lines">@@ -309,19 +295,7 @@
</span><span class="cx">         if (slot.isCacheableGetter())
</span><span class="cx">             getter = jsDynamicCast&lt;JSFunction*&gt;(slot.getterSetter()-&gt;getter());
</span><span class="cx"> 
</span><del>-        if (kind == GetByIDKind::Pure) {
-            AccessCase::AccessType type;
-            if (slot.isCacheableValue())
-                type = AccessCase::Load;
-            else if (slot.isUnset())
-                type = AccessCase::Miss;
-            else if (slot.isCacheableGetter())
-                type = AccessCase::GetGetter;
-            else
-                RELEASE_ASSERT_NOT_REACHED();
-
-            newCase = AccessCase::tryGet(vm, codeBlock, type, offset, structure, conditionSet, loadTargetFromProxy, slot.watchpointSet());
-        } else if (!loadTargetFromProxy &amp;&amp; getter &amp;&amp; AccessCase::canEmitIntrinsicGetter(getter, structure))
</del><ins>+        if (!loadTargetFromProxy &amp;&amp; getter &amp;&amp; AccessCase::canEmitIntrinsicGetter(getter, structure))
</ins><span class="cx">             newCase = AccessCase::getIntrinsic(vm, codeBlock, getter, slot.cachedOffset(), structure, conditionSet);
</span><span class="cx">         else {
</span><span class="cx">             AccessCase::AccessType type;
</span><span class="lines">@@ -356,12 +330,12 @@
</span><span class="cx">     return RetryCacheLater;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void repatchGetByID(ExecState* exec, JSValue baseValue, const Identifier&amp; propertyName, const PropertySlot&amp; slot, StructureStubInfo&amp; stubInfo, GetByIDKind kind)
</del><ins>+void repatchGetByID(ExecState* exec, JSValue baseValue, const Identifier&amp; propertyName, const PropertySlot&amp; slot, StructureStubInfo&amp; stubInfo)
</ins><span class="cx"> {
</span><span class="cx">     GCSafeConcurrentJITLocker locker(exec-&gt;codeBlock()-&gt;m_lock, exec-&gt;vm().heap);
</span><span class="cx">     
</span><del>-    if (tryCacheGetByID(exec, baseValue, propertyName, slot, stubInfo, kind) == GiveUpOnCache)
-        repatchCall(exec-&gt;codeBlock(), stubInfo.callReturnLocation, appropriateGenericGetByIdFunction(kind));
</del><ins>+    if (tryCacheGetByID(exec, baseValue, propertyName, slot, stubInfo) == GiveUpOnCache)
+        repatchCall(exec-&gt;codeBlock(), stubInfo.callReturnLocation, operationGetById);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static V_JITOperation_ESsiJJI appropriateGenericPutByIdFunction(const PutPropertySlot &amp;slot, PutKind putKind)
</span><span class="lines">@@ -936,9 +910,9 @@
</span><span class="cx">         callLinkInfo.remove();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void resetGetByID(CodeBlock* codeBlock, StructureStubInfo&amp; stubInfo, GetByIDKind kind)
</del><ins>+void resetGetByID(CodeBlock* codeBlock, StructureStubInfo&amp; stubInfo)
</ins><span class="cx"> {
</span><del>-    repatchCall(codeBlock, stubInfo.callReturnLocation, appropriateOptimizingGetByIdFunction(kind));
</del><ins>+    repatchCall(codeBlock, stubInfo.callReturnLocation, operationGetByIdOptimize);
</ins><span class="cx">     resetGetByIDCheckAndLoad(stubInfo);
</span><span class="cx">     MacroAssembler::repatchJump(stubInfo.callReturnLocation.jumpAtOffset(stubInfo.patch.deltaCallToJump), stubInfo.callReturnLocation.labelAtOffset(stubInfo.patch.deltaCallToSlowCase));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitRepatchh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/Repatch.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/Repatch.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/jit/Repatch.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -35,12 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><del>-enum class GetByIDKind {
-    Normal,
-    Pure
-};
-
-void repatchGetByID(ExecState*, JSValue, const Identifier&amp;, const PropertySlot&amp;, StructureStubInfo&amp;, GetByIDKind);
</del><ins>+void repatchGetByID(ExecState*, JSValue, const Identifier&amp;, const PropertySlot&amp;, StructureStubInfo&amp;);
</ins><span class="cx"> void buildGetByIDList(ExecState*, JSValue, const Identifier&amp;, const PropertySlot&amp;, StructureStubInfo&amp;);
</span><span class="cx"> void buildGetByIDProtoList(ExecState*, JSValue, const Identifier&amp;, const PropertySlot&amp;, StructureStubInfo&amp;);
</span><span class="cx"> void repatchPutByID(ExecState*, JSValue, Structure*, const Identifier&amp;, const PutPropertySlot&amp;, StructureStubInfo&amp;, PutKind);
</span><span class="lines">@@ -51,7 +46,7 @@
</span><span class="cx"> void unlinkFor(VM&amp;, CallLinkInfo&amp;);
</span><span class="cx"> void linkVirtualFor(ExecState*, CallLinkInfo&amp;);
</span><span class="cx"> void linkPolymorphicCall(ExecState*, CallLinkInfo&amp;, CallVariant);
</span><del>-void resetGetByID(CodeBlock*, StructureStubInfo&amp;, GetByIDKind);
</del><ins>+void resetGetByID(CodeBlock*, StructureStubInfo&amp;);
</ins><span class="cx"> void resetPutByID(CodeBlock*, StructureStubInfo&amp;);
</span><span class="cx"> void resetIn(CodeBlock*, StructureStubInfo&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejsccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jsc.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jsc.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/jsc.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -23,7 +23,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ArrayPrototype.h&quot;
</span><del>-#include &quot;BuiltinExecutables.h&quot;
</del><span class="cx"> #include &quot;ButterflyInlines.h&quot;
</span><span class="cx"> #include &quot;BytecodeGenerator.h&quot;
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><span class="lines">@@ -33,7 +32,6 @@
</span><span class="cx"> #include &quot;Disassembler.h&quot;
</span><span class="cx"> #include &quot;Exception.h&quot;
</span><span class="cx"> #include &quot;ExceptionHelpers.h&quot;
</span><del>-#include &quot;GetterSetter.h&quot;
</del><span class="cx"> #include &quot;HeapProfiler.h&quot;
</span><span class="cx"> #include &quot;HeapSnapshotBuilder.h&quot;
</span><span class="cx"> #include &quot;HeapStatistics.h&quot;
</span><span class="lines">@@ -554,7 +552,6 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionCreateRuntimeArray(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionCreateImpureGetter(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionCreateCustomGetterObject(ExecState*);
</span><del>-static EncodedJSValue JSC_HOST_CALL functionCreateBuiltin(ExecState*);
</del><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionSetImpureGetterDelegate(ExecState*);
</span><span class="cx"> 
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionSetElementRoot(ExecState*);
</span><span class="lines">@@ -575,7 +572,6 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionForceGCSlowPaths(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionHeapSize(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionAddressOf(ExecState*);
</span><del>-static EncodedJSValue JSC_HOST_CALL functionGetGetterSetter(ExecState*);
</del><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionDumpCallFrame(ExecState*);
</span><span class="cx"> #endif
</span><span class="lines">@@ -747,7 +743,6 @@
</span><span class="cx">         addFunction(vm, &quot;forceGCSlowPaths&quot;, functionForceGCSlowPaths, 0);
</span><span class="cx">         addFunction(vm, &quot;gcHeapSize&quot;, functionHeapSize, 0);
</span><span class="cx">         addFunction(vm, &quot;addressOf&quot;, functionAddressOf, 1);
</span><del>-        addFunction(vm, &quot;getGetterSetter&quot;, functionGetGetterSetter, 2);
</del><span class="cx"> #ifndef NDEBUG
</span><span class="cx">         addFunction(vm, &quot;dumpCallFrame&quot;, functionDumpCallFrame, 0);
</span><span class="cx"> #endif
</span><span class="lines">@@ -797,7 +792,6 @@
</span><span class="cx"> 
</span><span class="cx">         addFunction(vm, &quot;createImpureGetter&quot;, functionCreateImpureGetter, 1);
</span><span class="cx">         addFunction(vm, &quot;createCustomGetterObject&quot;, functionCreateCustomGetterObject, 0);
</span><del>-        addFunction(vm, &quot;createBuiltin&quot;, functionCreateBuiltin, 2);
</del><span class="cx">         addFunction(vm, &quot;setImpureGetterDelegate&quot;, functionSetImpureGetterDelegate, 2);
</span><span class="cx"> 
</span><span class="cx">         addFunction(vm, &quot;dumpTypesForAllVariables&quot;, functionDumpTypesForAllVariables , 0);
</span><span class="lines">@@ -1338,30 +1332,6 @@
</span><span class="cx">     return returnValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static EncodedJSValue JSC_HOST_CALL functionGetGetterSetter(ExecState* exec)
-{
-    JSValue value = exec-&gt;argument(0);
-    if (!value.isObject())
-        return JSValue::encode(jsUndefined());
-
-    JSValue property = exec-&gt;argument(1);
-    if (!property.isString())
-        return JSValue::encode(jsUndefined());
-
-    Identifier ident = Identifier::fromString(&amp;exec-&gt;vm(), property.toString(exec)-&gt;value(exec));
-
-    PropertySlot slot(value, PropertySlot::InternalMethodType::VMInquiry);
-    value.getPropertySlot(exec, ident, slot);
-
-    JSValue result;
-    if (slot.isCacheableGetter())
-        result = slot.getterSetter();
-    else
-        result = jsNull();
-
-    return JSValue::encode(result);
-}
-
</del><span class="cx"> EncodedJSValue JSC_HOST_CALL functionVersion(ExecState*)
</span><span class="cx"> {
</span><span class="cx">     // We need this function for compatibility with the Mozilla JS tests but for now
</span><span class="lines">@@ -1751,22 +1721,6 @@
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue JSC_HOST_CALL functionCreateBuiltin(ExecState* exec)
-{
-    if (exec-&gt;argumentCount() &lt; 1 || !exec-&gt;argument(0).isString())
-        return JSValue::encode(jsUndefined());
-
-    String functionText = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
-    if (exec-&gt;hadException())
-        return JSValue::encode(JSValue());
-
-    VM&amp; vm = exec-&gt;vm();
-    const SourceCode&amp; source = makeSource(functionText);
-    JSFunction* func = JSFunction::createBuiltinFunction(vm, BuiltinExecutables::createExecutable(vm, source, Identifier::fromString(&amp;vm, &quot;foo&quot;), ConstructorKind::None, ConstructAbility::CannotConstruct)-&gt;link(vm, source), exec-&gt;lexicalGlobalObject());
-
-    return JSValue::encode(func);
-}
-
</del><span class="cx"> EncodedJSValue JSC_HOST_CALL functionCheckModuleSyntax(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     String source = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntData.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntData.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/llint/LLIntData.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -144,9 +144,9 @@
</span><span class="cx">     
</span><span class="cx">     STATIC_ASSERT(StringType == 6);
</span><span class="cx">     STATIC_ASSERT(SymbolType == 7);
</span><del>-    STATIC_ASSERT(ObjectType == 20);
-    STATIC_ASSERT(FinalObjectType == 21);
-    STATIC_ASSERT(JSFunctionType == 23);
</del><ins>+    STATIC_ASSERT(ObjectType == 21);
+    STATIC_ASSERT(FinalObjectType == 22);
+    STATIC_ASSERT(JSFunctionType == 24);
</ins><span class="cx">     STATIC_ASSERT(MasqueradesAsUndefined == 1);
</span><span class="cx">     STATIC_ASSERT(ImplementsDefaultHasInstance == 2);
</span><span class="cx">     STATIC_ASSERT(FirstConstantRegisterIndex == 0x40000000);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -545,19 +545,6 @@
</span><span class="cx">     LLINT_RETURN(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LLINT_SLOW_PATH_DECL(slow_path_try_get_by_id)
-{
-    LLINT_BEGIN();
-    CodeBlock* codeBlock = exec-&gt;codeBlock();
-    const Identifier&amp; ident = codeBlock-&gt;identifier(pc[3].u.operand);
-    JSValue baseValue = LLINT_OP_C(2).jsValue();
-    PropertySlot slot(baseValue, PropertySlot::PropertySlot::InternalMethodType::VMInquiry);
-
-    baseValue.getPropertySlot(exec, ident, slot);
-
-    LLINT_RETURN(slot.getPureResult());
-}
-
</del><span class="cx"> LLINT_SLOW_PATH_DECL(slow_path_get_by_id)
</span><span class="cx"> {
</span><span class="cx">     LLINT_BEGIN();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntSlowPathsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -69,7 +69,6 @@
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_regexp);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_instanceof);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_instanceof_custom);
</span><del>-LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_try_get_by_id);
</del><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_by_id);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_arguments_length);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_put_by_id);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLowLevelInterpreterasm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -326,9 +326,9 @@
</span><span class="cx"> # Type constants.
</span><span class="cx"> const StringType = 6
</span><span class="cx"> const SymbolType = 7
</span><del>-const ObjectType = 20
-const FinalObjectType = 21
-const JSFunctionType = 23
</del><ins>+const ObjectType = 21
+const FinalObjectType = 22
+const JSFunctionType = 24
</ins><span class="cx"> 
</span><span class="cx"> # Type flags constants.
</span><span class="cx"> const MasqueradesAsUndefined = 1
</span><span class="lines">@@ -1301,12 +1301,6 @@
</span><span class="cx">     dispatch(4)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-_llint_op_try_get_by_id:
-    traceExecution()
-    callSlowPath(_llint_slow_path_try_get_by_id)
-    dispatch(4)
-
-
</del><span class="cx"> _llint_op_del_by_id:
</span><span class="cx">     traceExecution()
</span><span class="cx">     callSlowPath(_llint_slow_path_del_by_id)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGetterSettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/GetterSetter.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GetterSetter.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/runtime/GetterSetter.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx"> 
</span><span class="cx"> STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(GetterSetter);
</span><span class="cx"> 
</span><del>-const ClassInfo GetterSetter::s_info = { &quot;GetterSetter&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(GetterSetter) };
</del><ins>+const ClassInfo GetterSetter::s_info = { &quot;GetterSetter&quot;, 0, 0, CREATE_METHOD_TABLE(GetterSetter) };
</ins><span class="cx"> 
</span><span class="cx"> void GetterSetter::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGetterSetterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/GetterSetter.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GetterSetter.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/runtime/GetterSetter.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -41,21 +41,21 @@
</span><span class="cx"> // that if a property holding a GetterSetter reference is constant-inferred and
</span><span class="cx"> // that constant is observed to have a non-null setter (or getter) then we can
</span><span class="cx"> // constant fold that setter (or getter).
</span><del>-class GetterSetter final : public JSNonFinalObject {
</del><ins>+class GetterSetter final : public JSCell {
</ins><span class="cx">     friend class JIT;
</span><del>-    typedef JSNonFinalObject Base;
</del><ins>+
</ins><span class="cx"> private:
</span><span class="cx">     GetterSetter(VM&amp; vm, JSGlobalObject* globalObject)
</span><del>-        : Base(vm, vm.getterSetterStructure.get())
</del><ins>+        : JSCell(vm, vm.getterSetterStructure.get())
</ins><span class="cx">     {
</span><span class="cx">         m_getter.set(vm, this, globalObject-&gt;nullGetterFunction());
</span><span class="cx">         m_setter.set(vm, this, globalObject-&gt;nullSetterFunction());
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> public:
</span><ins>+    typedef JSCell Base;
+    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
</ins><span class="cx"> 
</span><del>-    static const unsigned StructureFlags = Base::StructureFlags | OverridesGetOwnPropertySlot | StructureIsImmortal;
-
</del><span class="cx">     static GetterSetter* create(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="cx">     {
</span><span class="cx">         GetterSetter* getterSetter = new (NotNull, allocateCell&lt;GetterSetter&gt;(vm.heap)) GetterSetter(vm, globalObject);
</span><span class="lines">@@ -128,13 +128,8 @@
</span><span class="cx">         return OBJECT_OFFSETOF(GetterSetter, m_setter);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    DECLARE_EXPORT_INFO;
</del><ins>+    DECLARE_INFO;
</ins><span class="cx"> 
</span><del>-    static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&amp;) { RELEASE_ASSERT_NOT_REACHED(); return false; }
-    static bool put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&amp;) { RELEASE_ASSERT_NOT_REACHED(); return false; }
-    static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&amp;, bool) { RELEASE_ASSERT_NOT_REACHED(); return false; }
-    static bool deleteProperty(JSCell*, ExecState*, PropertyName) { RELEASE_ASSERT_NOT_REACHED(); return false; }
-
</del><span class="cx"> private:
</span><span class="cx">     WriteBarrier&lt;JSObject&gt; m_getter;
</span><span class="cx">     WriteBarrier&lt;JSObject&gt; m_setter;  
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSTypeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSType.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSType.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/runtime/JSType.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx">     StringType,
</span><span class="cx">     SymbolType,
</span><span class="cx"> 
</span><ins>+    GetterSetterType,
</ins><span class="cx">     CustomGetterSetterType,
</span><span class="cx">     APIValueWrapperType,
</span><span class="cx"> 
</span><span class="lines">@@ -74,7 +75,6 @@
</span><span class="cx">     Float64ArrayType,
</span><span class="cx">     DataViewType,
</span><span class="cx"> 
</span><del>-    GetterSetterType,
</del><span class="cx">     GlobalObjectType,
</span><span class="cx">     LexicalEnvironmentType,
</span><span class="cx">     GlobalLexicalEnvironmentType,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePropertySlotcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PropertySlot.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PropertySlot.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/runtime/PropertySlot.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -39,21 +39,4 @@
</span><span class="cx">     return JSValue::decode(m_data.custom.getValue(exec, JSValue::encode(thisValue), propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue PropertySlot::getPureResult() const
-{
-    JSValue result;
-    if (isTaintedByProxy())
-        result = jsNull();
-    else if (isCacheableValue())
-        result = JSValue::decode(m_data.value);
-    else if (isCacheableGetter())
-        result = getterSetter();
-    else if (isUnset())
-        result = jsUndefined();
-    else
-        result = jsNull();
-    
-    return result;
-}
-
</del><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePropertySloth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PropertySlot.h (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PropertySlot.h        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/runtime/PropertySlot.h        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -94,7 +94,6 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue getValue(ExecState*, PropertyName) const;
</span><span class="cx">     JSValue getValue(ExecState*, unsigned propertyName) const;
</span><del>-    JSValue getPureResult() const;
</del><span class="cx"> 
</span><span class="cx">     bool isCacheable() const { return m_cacheability == CachingAllowed &amp;&amp; m_offset != invalidOffset; }
</span><span class="cx">     bool isUnset() const { return m_propertyType == TypeUnset; }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeProxyObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -332,7 +332,8 @@
</span><span class="cx"> bool ProxyObject::getOwnPropertySlotCommon(ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot)
</span><span class="cx"> {
</span><span class="cx">     slot.disableCaching();
</span><del>-    slot.setIsTaintedByProxy();
</del><ins>+    if (slot.internalMethodType() != PropertySlot::InternalMethodType::VMInquiry)
+        slot.setIsTaintedByProxy();
</ins><span class="cx">     switch (slot.internalMethodType()) {
</span><span class="cx">     case PropertySlot::InternalMethodType::Get:
</span><span class="cx">         slot.setCustom(this, CustomAccessor, performProxyGet);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstresstrygetbyidjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/try-get-by-id.js (199107 => 199108)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/try-get-by-id.js        2016-04-06 18:39:59 UTC (rev 199107)
+++ trunk/Source/JavaScriptCore/tests/stress/try-get-by-id.js        2016-04-06 18:49:54 UTC (rev 199108)
</span><span class="lines">@@ -1,117 +0,0 @@
</span><del>-function tryGetByIdText(propertyName) { return `(function (base) { return @tryGetById(base, '${propertyName}'); })`; }
-
-
-// Test get value off object.
-{
-    let getCaller = createBuiltin(tryGetByIdText(&quot;caller&quot;));
-    noInline(getCaller);
-    let obj = {caller: 1};
-
-    for (let i = 0; i &lt; 100000; i++) {
-        if (getCaller(obj) !== 1)
-            throw new Error(&quot;wrong on iteration: &quot; + i);
-    }
-}
-
-// Test slot is custom function trap for a value.
-{
-    let getCaller = createBuiltin(tryGetByIdText(&quot;caller&quot;));
-    noInline(getCaller);
-    let func = function () {};
-
-    for (let i = 0; i &lt; 100000; i++) {
-        if (getCaller(func) !== null)
-            throw new Error(&quot;wrong on iteration: &quot; + i);
-    }
-}
-
-// Test slot is a GetterSetter.
-{
-    let get = createBuiltin(tryGetByIdText(&quot;getterSetter&quot;));
-    noInline(get);
-    let obj = {};
-    Object.defineProperty(obj, &quot;getterSetter&quot;, { get: function () { throw new Error(&quot;should not be called&quot;); } });
-
-    for (let i = 0; i &lt; 100000; i++) {
-        if (get(obj) !== getGetterSetter(obj, &quot;getterSetter&quot;))
-            throw new Error(&quot;wrong on iteration: &quot; + i);
-    }
-}
-
-// Test slot is unset.
-{
-    let get = createBuiltin(tryGetByIdText(&quot;getterSetter&quot;));
-    noInline(get);
-    let obj = {};
-
-    for (let i = 0; i &lt; 100000; i++) {
-        if (get(obj) !== undefined)
-            throw new Error(&quot;wrong on iteration: &quot; + i);
-    }
-}
-
-// Test slot is on a proxy with value.
-{
-    let get = createBuiltin(tryGetByIdText(&quot;value&quot;));
-    noInline(get);
-
-    let obj = {value: 1};
-    let p = new Proxy(obj, { get: function() { throw new Error(&quot;should not be called&quot;); } });
-
-    for (let i = 0; i &lt; 100000; i++) {
-        if (get(p) !== null)
-            throw new Error(&quot;wrong on iteration: &quot; + i);
-    }
-}
-
-// Test mutating inline cache.
-{
-    let get = createBuiltin(tryGetByIdText(&quot;caller&quot;));
-    noInline(get);
-
-    let obj = {caller : 1};
-    let func = function() {};
-
-    for (let i = 0; i &lt; 100000; i++) {
-        if (i % 100 === 0) {
-            if (get(func) !== null)
-                throw new Error(&quot;wrong on iteration: &quot; + i);
-        } else {
-            if (get(obj) !== 1)
-                throw new Error(&quot;wrong on iteration: &quot; + i);
-        }
-    }
-}
-
-// Test new type on each iteration.
-{
-    let get = createBuiltin(tryGetByIdText(&quot;caller&quot;));
-    noInline(get);
-
-    let func = function() {};
-
-    for (let i = 0; i &lt; 100000; i++) {
-        if (i % 100 === 0) {
-            if (get(func) !== null)
-                throw new Error(&quot;wrong on iteration: &quot; + i);
-        } else {
-            let obj = {caller : 1};
-            if (get(obj) !== 1)
-                throw new Error(&quot;wrong on iteration: &quot; + i);
-        }
-    }
-}
-
-// Test with array length. This is null because the value is not cacheable.
-{
-    let get = createBuiltin(tryGetByIdText(&quot;length&quot;));
-    noInline(get);
-
-    let arr = [];
-
-    for (let i = 0; i &lt; 100000; i++) {
-        if (get(arr) !== null)
-            throw new Error(&quot;wrong on iteration: &quot; + i);
-
-    }
-}
</del></span></pre>
</div>
</div>

</body>
</html>