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

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

<h3>Log Message</h3>
<pre>Rename HighFidelityTypeProfiling variables for more clarity
https://bugs.webkit.org/show_bug.cgi?id=135899

Patch by Saam Barati &lt;sbarati@apple.com&gt; on 2014-08-20
Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Many names that are used in the type profiling infrastructure
prefix themselves with &quot;HighFidelity&quot; or include the words &quot;high&quot;
and/or &quot;fidelity&quot; in some way. But the words &quot;high&quot; and &quot;fidelity&quot; don't
add anything descriptive to the names surrounding type profiling.
So this patch removes all uses of &quot;HighFidelity&quot; and its variants.

Most renamings change &quot;HighFidelity*&quot; to &quot;TypeProfiler*&quot; or simply
drop the prefix &quot;HighFidelity&quot; all together. Now, almost all names
in relation to type profiling contain in them &quot;TypeProfiler&quot; or
&quot;TypeProfiling&quot; or some combination of the words &quot;type&quot; and &quot;profile&quot;.

This patch also changes how we check if type profiling is enabled:
We no longer call vm::isProfilingTypesWithHighFidelity. We now just
check that vm::typeProfiler is not null.

This patch also changes all calls to TypeProfilerLog::processLogEntries
to use ASCIILiteral to form WTFStrings instead of vanilla C string literals.

* CMakeLists.txt:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/BytecodeList.json:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::CodeBlock):
* bytecode/TypeLocation.h:
* bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
(JSC::UnlinkedCodeBlock::typeProfilerExpressionInfoForBytecodeOffset):
(JSC::UnlinkedCodeBlock::addTypeProfilerExpressionInfo):
(JSC::UnlinkedCodeBlock::highFidelityTypeProfileExpressionInfoForBytecodeOffset): Deleted.
(JSC::UnlinkedCodeBlock::addHighFidelityTypeProfileExpressionInfo): Deleted.
* bytecode/UnlinkedCodeBlock.h:
(JSC::UnlinkedFunctionExecutable::typeProfilingStartOffset):
(JSC::UnlinkedFunctionExecutable::typeProfilingEndOffset):
(JSC::UnlinkedFunctionExecutable::highFidelityTypeProfilingStartOffset): Deleted.
(JSC::UnlinkedFunctionExecutable::highFidelityTypeProfilingEndOffset): Deleted.
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitMove):
(JSC::BytecodeGenerator::emitTypeProfilerExpressionInfo):
(JSC::BytecodeGenerator::emitProfileType):
(JSC::BytecodeGenerator::emitHighFidelityTypeProfilingExpressionInfo): Deleted.
(JSC::BytecodeGenerator::emitProfileTypesWithHighFidelity): Deleted.
* bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::isProfilingTypesWithHighFidelity): Deleted.
* bytecompiler/NodesCodegen.cpp:
(JSC::ThisNode::emitBytecode):
(JSC::ResolveNode::emitBytecode):
(JSC::BracketAccessorNode::emitBytecode):
(JSC::DotAccessorNode::emitBytecode):
(JSC::FunctionCallValueNode::emitBytecode):
(JSC::FunctionCallResolveNode::emitBytecode):
(JSC::FunctionCallBracketNode::emitBytecode):
(JSC::FunctionCallDotNode::emitBytecode):
(JSC::CallFunctionCallDotNode::emitBytecode):
(JSC::ApplyFunctionCallDotNode::emitBytecode):
(JSC::PostfixNode::emitResolve):
(JSC::PostfixNode::emitBracket):
(JSC::PostfixNode::emitDot):
(JSC::PrefixNode::emitResolve):
(JSC::PrefixNode::emitBracket):
(JSC::PrefixNode::emitDot):
(JSC::ReadModifyResolveNode::emitBytecode):
(JSC::AssignResolveNode::emitBytecode):
(JSC::AssignDotNode::emitBytecode):
(JSC::ReadModifyDotNode::emitBytecode):
(JSC::AssignBracketNode::emitBytecode):
(JSC::ReadModifyBracketNode::emitBytecode):
(JSC::ConstDeclNode::emitCodeSingle):
(JSC::EmptyVarExpression::emitBytecode):
(JSC::ReturnNode::emitBytecode):
(JSC::FunctionBodyNode::emitBytecode):
* heap/Heap.cpp:
(JSC::Heap::collect):
* inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets):
(Inspector::recompileAllJSFunctionsForTypeProfiling):
(Inspector::InspectorRuntimeAgent::willDestroyFrontendAndBackend):
(Inspector::InspectorRuntimeAgent::enableTypeProfiler):
(Inspector::InspectorRuntimeAgent::disableTypeProfiler):
(Inspector::InspectorRuntimeAgent::setTypeProfilerEnabledState):
(Inspector::InspectorRuntimeAgent::enableHighFidelityTypeProfiling): Deleted.
(Inspector::InspectorRuntimeAgent::disableHighFidelityTypeProfiling): Deleted.
(Inspector::InspectorRuntimeAgent::setHighFidelityTypeProfilingEnabledState): Deleted.
* inspector/agents/InspectorRuntimeAgent.h:
* inspector/protocol/Runtime.json:
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompile):
* jit/JIT.h:
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_profile_type):
(JSC::JIT::emit_op_profile_types_with_high_fidelity): Deleted.
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_profile_type):
(JSC::JIT::emit_op_profile_types_with_high_fidelity): Deleted.
* jit/JITOperations.cpp:
* jsc.cpp:
(functionDumpTypesForAllVariables):
* llint/LLIntSlowPaths.cpp:
* llint/LowLevelInterpreter.asm:
* runtime/CodeCache.cpp:
(JSC::CodeCache::getGlobalCodeBlock):
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
* runtime/CommonSlowPaths.h:
* runtime/Executable.cpp:
(JSC::ScriptExecutable::ScriptExecutable):
(JSC::ProgramExecutable::ProgramExecutable):
(JSC::FunctionExecutable::FunctionExecutable):
(JSC::ProgramExecutable::initializeGlobalProperties):
* runtime/Executable.h:
(JSC::ScriptExecutable::typeProfilingStartOffset):
(JSC::ScriptExecutable::typeProfilingEndOffset):
(JSC::ScriptExecutable::highFidelityTypeProfilingStartOffset): Deleted.
(JSC::ScriptExecutable::highFidelityTypeProfilingEndOffset): Deleted.
* runtime/HighFidelityLog.cpp: Removed.
* runtime/HighFidelityLog.h: Removed.
* runtime/HighFidelityTypeProfiler.cpp: Removed.
* runtime/HighFidelityTypeProfiler.h: Removed.
* runtime/Options.h:
* runtime/SymbolTable.cpp:
(JSC::SymbolTable::prepareForTypeProfiling):
(JSC::SymbolTable::uniqueIDForVariable):
(JSC::SymbolTable::uniqueIDForRegister):
(JSC::SymbolTable::prepareForHighFidelityTypeProfiling): Deleted.
* runtime/SymbolTable.h:
* runtime/TypeProfiler.cpp: Added.
(JSC::TypeProfiler::logTypesForTypeLocation):
(JSC::TypeProfiler::insertNewLocation):
(JSC::TypeProfiler::getTypesForVariableAtOffsetForInspector):
(JSC::descriptorMatchesTypeLocation):
(JSC::TypeProfiler::findLocation):
* runtime/TypeProfiler.h: Added.
(JSC::QueryKey::QueryKey):
(JSC::QueryKey::isHashTableDeletedValue):
(JSC::QueryKey::operator==):
(JSC::QueryKey::hash):
(JSC::QueryKeyHash::hash):
(JSC::QueryKeyHash::equal):
(JSC::TypeProfiler::functionHasExecutedCache):
(JSC::TypeProfiler::typeLocationCache):
* runtime/TypeProfilerLog.cpp: Added.
(JSC::TypeProfilerLog::initializeLog):
(JSC::TypeProfilerLog::~TypeProfilerLog):
(JSC::TypeProfilerLog::processLogEntries):
* runtime/TypeProfilerLog.h: Added.
(JSC::TypeProfilerLog::LogEntry::structureIDOffset):
(JSC::TypeProfilerLog::LogEntry::valueOffset):
(JSC::TypeProfilerLog::LogEntry::locationOffset):
(JSC::TypeProfilerLog::TypeProfilerLog):
(JSC::TypeProfilerLog::recordTypeInformationForLocation):
(JSC::TypeProfilerLog::logEndPtr):
(JSC::TypeProfilerLog::logStartOffset):
(JSC::TypeProfilerLog::currentLogEntryOffset):
* runtime/VM.cpp:
(JSC::VM::VM):
(JSC::VM::enableTypeProfiler):
(JSC::VM::disableTypeProfiler):
(JSC::VM::dumpTypeProfilerData):
(JSC::VM::enableHighFidelityTypeProfiling): Deleted.
(JSC::VM::disableHighFidelityTypeProfiling): Deleted.
(JSC::VM::dumpHighFidelityProfilingTypes): Deleted.
* runtime/VM.h:
(JSC::VM::typeProfilerLog):
(JSC::VM::typeProfiler):
(JSC::VM::isProfilingTypesWithHighFidelity): Deleted.
(JSC::VM::highFidelityLog): Deleted.
(JSC::VM::highFidelityTypeProfiler): Deleted.

Source/WebInspectorUI:

Change a reference in a comment to a JavaScriptCore file to its
newly renamed variant.

* UserInterface/Models/ScriptSyntaxTree.js:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreCMakeListstxt">trunk/Source/JavaScriptCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj">trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters">trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</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="#trunkSourceJavaScriptCorebytecodeTypeLocationh">trunk/Source/JavaScriptCore/bytecode/TypeLocation.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockcpp">trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockh">trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.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="#trunkSourceJavaScriptCoreheapHeapcpp">trunk/Source/JavaScriptCore/heap/Heap.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorRuntimeAgentcpp">trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorRuntimeAgenth">trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorprotocolRuntimejson">trunk/Source/JavaScriptCore/inspector/protocol/Runtime.json</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="#trunkSourceJavaScriptCorejitJITOpcodescpp">trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOpcodes32_64cpp">trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOperationscpp">trunk/Source/JavaScriptCore/jit/JITOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejsccpp">trunk/Source/JavaScriptCore/jsc.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntSlowPathscpp">trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLowLevelInterpreterasm">trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCodeCachecpp">trunk/Source/JavaScriptCore/runtime/CodeCache.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCommonSlowPathscpp">trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCommonSlowPathsh">trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeExecutablecpp">trunk/Source/JavaScriptCore/runtime/Executable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeExecutableh">trunk/Source/JavaScriptCore/runtime/Executable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeOptionsh">trunk/Source/JavaScriptCore/runtime/Options.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSymbolTablecpp">trunk/Source/JavaScriptCore/runtime/SymbolTable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSymbolTableh">trunk/Source/JavaScriptCore/runtime/SymbolTable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMcpp">trunk/Source/JavaScriptCore/runtime/VM.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMh">trunk/Source/JavaScriptCore/runtime/VM.h</a></li>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsScriptSyntaxTreejs">trunk/Source/WebInspectorUI/UserInterface/Models/ScriptSyntaxTree.js</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreruntimeTypeProfilercpp">trunk/Source/JavaScriptCore/runtime/TypeProfiler.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeTypeProfilerh">trunk/Source/JavaScriptCore/runtime/TypeProfiler.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeTypeProfilerLogcpp">trunk/Source/JavaScriptCore/runtime/TypeProfilerLog.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeTypeProfilerLogh">trunk/Source/JavaScriptCore/runtime/TypeProfilerLog.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreruntimeHighFidelityLogcpp">trunk/Source/JavaScriptCore/runtime/HighFidelityLog.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeHighFidelityLogh">trunk/Source/JavaScriptCore/runtime/HighFidelityLog.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeHighFidelityTypeProfilercpp">trunk/Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeHighFidelityTypeProfilerh">trunk/Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/CMakeLists.txt (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/CMakeLists.txt        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/CMakeLists.txt        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -416,8 +416,6 @@
</span><span class="cx">     runtime/FunctionHasExecutedCache.cpp
</span><span class="cx">     runtime/FunctionPrototype.cpp
</span><span class="cx">     runtime/GetterSetter.cpp
</span><del>-    runtime/HighFidelityLog.cpp
-    runtime/HighFidelityTypeProfiler.cpp
</del><span class="cx">     runtime/Identifier.cpp
</span><span class="cx">     runtime/IndexingType.cpp
</span><span class="cx">     runtime/InitializeThreading.cpp
</span><span class="lines">@@ -525,6 +523,8 @@
</span><span class="cx">     runtime/SymbolTable.cpp
</span><span class="cx">     runtime/TestRunnerUtils.cpp
</span><span class="cx">     runtime/TypeLocationCache.cpp
</span><ins>+    runtime/TypeProfiler.cpp
+    runtime/TypeProfilerLog.cpp
</ins><span class="cx">     runtime/TypeSet.cpp
</span><span class="cx">     runtime/TypedArrayController.cpp
</span><span class="cx">     runtime/TypedArrayType.cpp
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -1,3 +1,186 @@
</span><ins>+2014-08-20  Saam Barati  &lt;sbarati@apple.com&gt;
+
+        Rename HighFidelityTypeProfiling variables for more clarity
+        https://bugs.webkit.org/show_bug.cgi?id=135899
+
+        Reviewed by Geoffrey Garen.
+
+        Many names that are used in the type profiling infrastructure
+        prefix themselves with &quot;HighFidelity&quot; or include the words &quot;high&quot;
+        and/or &quot;fidelity&quot; in some way. But the words &quot;high&quot; and &quot;fidelity&quot; don't 
+        add anything descriptive to the names surrounding type profiling. 
+        So this patch removes all uses of &quot;HighFidelity&quot; and its variants.
+
+        Most renamings change &quot;HighFidelity*&quot; to &quot;TypeProfiler*&quot; or simply 
+        drop the prefix &quot;HighFidelity&quot; all together. Now, almost all names 
+        in relation to type profiling contain in them &quot;TypeProfiler&quot; or 
+        &quot;TypeProfiling&quot; or some combination of the words &quot;type&quot; and &quot;profile&quot;.
+
+        This patch also changes how we check if type profiling is enabled:
+        We no longer call vm::isProfilingTypesWithHighFidelity. We now just 
+        check that vm::typeProfiler is not null.
+
+        This patch also changes all calls to TypeProfilerLog::processLogEntries
+        to use ASCIILiteral to form WTFStrings instead of vanilla C string literals.
+
+        * CMakeLists.txt:
+        * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
+        * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+        * bytecode/BytecodeList.json:
+        * bytecode/BytecodeUseDef.h:
+        (JSC::computeUsesForBytecodeOffset):
+        (JSC::computeDefsForBytecodeOffset):
+        * bytecode/CodeBlock.cpp:
+        (JSC::CodeBlock::dumpBytecode):
+        (JSC::CodeBlock::CodeBlock):
+        * bytecode/TypeLocation.h:
+        * bytecode/UnlinkedCodeBlock.cpp:
+        (JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
+        (JSC::UnlinkedCodeBlock::typeProfilerExpressionInfoForBytecodeOffset):
+        (JSC::UnlinkedCodeBlock::addTypeProfilerExpressionInfo):
+        (JSC::UnlinkedCodeBlock::highFidelityTypeProfileExpressionInfoForBytecodeOffset): Deleted.
+        (JSC::UnlinkedCodeBlock::addHighFidelityTypeProfileExpressionInfo): Deleted.
+        * bytecode/UnlinkedCodeBlock.h:
+        (JSC::UnlinkedFunctionExecutable::typeProfilingStartOffset):
+        (JSC::UnlinkedFunctionExecutable::typeProfilingEndOffset):
+        (JSC::UnlinkedFunctionExecutable::highFidelityTypeProfilingStartOffset): Deleted.
+        (JSC::UnlinkedFunctionExecutable::highFidelityTypeProfilingEndOffset): Deleted.
+        * bytecompiler/BytecodeGenerator.cpp:
+        (JSC::BytecodeGenerator::generate):
+        (JSC::BytecodeGenerator::BytecodeGenerator):
+        (JSC::BytecodeGenerator::emitMove):
+        (JSC::BytecodeGenerator::emitTypeProfilerExpressionInfo):
+        (JSC::BytecodeGenerator::emitProfileType):
+        (JSC::BytecodeGenerator::emitHighFidelityTypeProfilingExpressionInfo): Deleted.
+        (JSC::BytecodeGenerator::emitProfileTypesWithHighFidelity): Deleted.
+        * bytecompiler/BytecodeGenerator.h:
+        (JSC::BytecodeGenerator::isProfilingTypesWithHighFidelity): Deleted.
+        * bytecompiler/NodesCodegen.cpp:
+        (JSC::ThisNode::emitBytecode):
+        (JSC::ResolveNode::emitBytecode):
+        (JSC::BracketAccessorNode::emitBytecode):
+        (JSC::DotAccessorNode::emitBytecode):
+        (JSC::FunctionCallValueNode::emitBytecode):
+        (JSC::FunctionCallResolveNode::emitBytecode):
+        (JSC::FunctionCallBracketNode::emitBytecode):
+        (JSC::FunctionCallDotNode::emitBytecode):
+        (JSC::CallFunctionCallDotNode::emitBytecode):
+        (JSC::ApplyFunctionCallDotNode::emitBytecode):
+        (JSC::PostfixNode::emitResolve):
+        (JSC::PostfixNode::emitBracket):
+        (JSC::PostfixNode::emitDot):
+        (JSC::PrefixNode::emitResolve):
+        (JSC::PrefixNode::emitBracket):
+        (JSC::PrefixNode::emitDot):
+        (JSC::ReadModifyResolveNode::emitBytecode):
+        (JSC::AssignResolveNode::emitBytecode):
+        (JSC::AssignDotNode::emitBytecode):
+        (JSC::ReadModifyDotNode::emitBytecode):
+        (JSC::AssignBracketNode::emitBytecode):
+        (JSC::ReadModifyBracketNode::emitBytecode):
+        (JSC::ConstDeclNode::emitCodeSingle):
+        (JSC::EmptyVarExpression::emitBytecode):
+        (JSC::ReturnNode::emitBytecode):
+        (JSC::FunctionBodyNode::emitBytecode):
+        * heap/Heap.cpp:
+        (JSC::Heap::collect):
+        * inspector/agents/InspectorRuntimeAgent.cpp:
+        (Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets):
+        (Inspector::recompileAllJSFunctionsForTypeProfiling):
+        (Inspector::InspectorRuntimeAgent::willDestroyFrontendAndBackend):
+        (Inspector::InspectorRuntimeAgent::enableTypeProfiler):
+        (Inspector::InspectorRuntimeAgent::disableTypeProfiler):
+        (Inspector::InspectorRuntimeAgent::setTypeProfilerEnabledState):
+        (Inspector::InspectorRuntimeAgent::enableHighFidelityTypeProfiling): Deleted.
+        (Inspector::InspectorRuntimeAgent::disableHighFidelityTypeProfiling): Deleted.
+        (Inspector::InspectorRuntimeAgent::setHighFidelityTypeProfilingEnabledState): Deleted.
+        * inspector/agents/InspectorRuntimeAgent.h:
+        * inspector/protocol/Runtime.json:
+        * jit/JIT.cpp:
+        (JSC::JIT::privateCompileMainPass):
+        (JSC::JIT::privateCompile):
+        * jit/JIT.h:
+        * jit/JITOpcodes.cpp:
+        (JSC::JIT::emit_op_profile_type):
+        (JSC::JIT::emit_op_profile_types_with_high_fidelity): Deleted.
+        * jit/JITOpcodes32_64.cpp:
+        (JSC::JIT::emit_op_profile_type):
+        (JSC::JIT::emit_op_profile_types_with_high_fidelity): Deleted.
+        * jit/JITOperations.cpp:
+        * jsc.cpp:
+        (functionDumpTypesForAllVariables):
+        * llint/LLIntSlowPaths.cpp:
+        * llint/LowLevelInterpreter.asm:
+        * runtime/CodeCache.cpp:
+        (JSC::CodeCache::getGlobalCodeBlock):
+        * runtime/CommonSlowPaths.cpp:
+        (JSC::SLOW_PATH_DECL):
+        * runtime/CommonSlowPaths.h:
+        * runtime/Executable.cpp:
+        (JSC::ScriptExecutable::ScriptExecutable):
+        (JSC::ProgramExecutable::ProgramExecutable):
+        (JSC::FunctionExecutable::FunctionExecutable):
+        (JSC::ProgramExecutable::initializeGlobalProperties):
+        * runtime/Executable.h:
+        (JSC::ScriptExecutable::typeProfilingStartOffset):
+        (JSC::ScriptExecutable::typeProfilingEndOffset):
+        (JSC::ScriptExecutable::highFidelityTypeProfilingStartOffset): Deleted.
+        (JSC::ScriptExecutable::highFidelityTypeProfilingEndOffset): Deleted.
+        * runtime/HighFidelityLog.cpp: Removed.
+        * runtime/HighFidelityLog.h: Removed.
+        * runtime/HighFidelityTypeProfiler.cpp: Removed.
+        * runtime/HighFidelityTypeProfiler.h: Removed.
+        * runtime/Options.h:
+        * runtime/SymbolTable.cpp:
+        (JSC::SymbolTable::prepareForTypeProfiling):
+        (JSC::SymbolTable::uniqueIDForVariable):
+        (JSC::SymbolTable::uniqueIDForRegister):
+        (JSC::SymbolTable::prepareForHighFidelityTypeProfiling): Deleted.
+        * runtime/SymbolTable.h:
+        * runtime/TypeProfiler.cpp: Added.
+        (JSC::TypeProfiler::logTypesForTypeLocation):
+        (JSC::TypeProfiler::insertNewLocation):
+        (JSC::TypeProfiler::getTypesForVariableAtOffsetForInspector):
+        (JSC::descriptorMatchesTypeLocation):
+        (JSC::TypeProfiler::findLocation):
+        * runtime/TypeProfiler.h: Added.
+        (JSC::QueryKey::QueryKey):
+        (JSC::QueryKey::isHashTableDeletedValue):
+        (JSC::QueryKey::operator==):
+        (JSC::QueryKey::hash):
+        (JSC::QueryKeyHash::hash):
+        (JSC::QueryKeyHash::equal):
+        (JSC::TypeProfiler::functionHasExecutedCache):
+        (JSC::TypeProfiler::typeLocationCache):
+        * runtime/TypeProfilerLog.cpp: Added.
+        (JSC::TypeProfilerLog::initializeLog):
+        (JSC::TypeProfilerLog::~TypeProfilerLog):
+        (JSC::TypeProfilerLog::processLogEntries):
+        * runtime/TypeProfilerLog.h: Added.
+        (JSC::TypeProfilerLog::LogEntry::structureIDOffset):
+        (JSC::TypeProfilerLog::LogEntry::valueOffset):
+        (JSC::TypeProfilerLog::LogEntry::locationOffset):
+        (JSC::TypeProfilerLog::TypeProfilerLog):
+        (JSC::TypeProfilerLog::recordTypeInformationForLocation):
+        (JSC::TypeProfilerLog::logEndPtr):
+        (JSC::TypeProfilerLog::logStartOffset):
+        (JSC::TypeProfilerLog::currentLogEntryOffset):
+        * runtime/VM.cpp:
+        (JSC::VM::VM):
+        (JSC::VM::enableTypeProfiler):
+        (JSC::VM::disableTypeProfiler):
+        (JSC::VM::dumpTypeProfilerData):
+        (JSC::VM::enableHighFidelityTypeProfiling): Deleted.
+        (JSC::VM::disableHighFidelityTypeProfiling): Deleted.
+        (JSC::VM::dumpHighFidelityProfilingTypes): Deleted.
+        * runtime/VM.h:
+        (JSC::VM::typeProfilerLog):
+        (JSC::VM::typeProfiler):
+        (JSC::VM::isProfilingTypesWithHighFidelity): Deleted.
+        (JSC::VM::highFidelityLog): Deleted.
+        (JSC::VM::highFidelityTypeProfiler): Deleted.
+
</ins><span class="cx"> 2014-08-20  Csaba Osztrogonác  &lt;ossy@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         URTBF after r172799.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -689,8 +689,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\FunctionHasExecutedCache.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\FunctionPrototype.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\GetterSetter.cpp&quot; /&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\runtime\HighFidelityLog.cpp&quot; /&gt;
-    &lt;ClCompile Include=&quot;..\runtime\HighFidelityTypeProfiler.cpp&quot; /&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\Identifier.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\IndexingType.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\InitializeThreading.cpp&quot; /&gt;
</span><span class="lines">@@ -799,6 +797,8 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\TypedArrayController.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\TypedArrayType.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\TypeLocationCache.cpp&quot; /&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\runtime\TypeProfiler.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\runtime\TypeProfilerLog.cpp&quot; /&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\TypeSet.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\VM.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\VMEntryScope.cpp&quot; /&gt;
</span><span class="lines">@@ -1425,8 +1425,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\GenericTypedArrayView.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\GenericTypedArrayViewInlines.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\GetterSetter.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\runtime\HighFidelityLog.h&quot; /&gt;
-    &lt;ClInclude Include=&quot;..\runtime\HighFidelityTypeProfiler.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\Identifier.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\IndexingHeader.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\IndexingHeaderInlines.h&quot; /&gt;
</span><span class="lines">@@ -1584,6 +1582,8 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\TypedArrayInlines.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\TypedArrayType.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\TypeLocationCache.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\runtime\TypeProfiler.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\runtime\TypeProfilerLog.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\TypeSet.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\TypedArrays.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\Uint16Array.h&quot; /&gt;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -612,12 +612,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\GetterSetter.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\HighFidelityLog.cpp&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
-    &lt;ClCompile Include=&quot;..\runtime\HighFidelityTypeProfiler.cpp&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\Identifier.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">@@ -855,6 +849,12 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\TypeLocationCache.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\runtime\TypeProfiler.cpp&quot;&gt;
+      &lt;Filter&gt;runtime&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\runtime\TypeProfilerLog.cpp&quot;&gt;
+      &lt;Filter&gt;runtime&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\TypeSet.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">@@ -2558,12 +2558,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\GetterSetter.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\HighFidelityLog.h&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
-    &lt;ClInclude Include=&quot;..\runtime\HighFidelityTypeProfiler.h&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\Identifier.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -2834,6 +2828,12 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\TypeLocationCache.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\runtime\TypeProfiler.h&quot;&gt;
+      &lt;Filter&gt;runtime&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\runtime\TypeProfilerLog.h&quot;&gt;
+      &lt;Filter&gt;runtime&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\TypeSet.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="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -228,10 +228,8 @@
</span><span class="cx">                 0F2D4DE819832DAC007D4B19 /* ToThisStatus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2D4DE519832DAC007D4B19 /* ToThisStatus.cpp */; };
</span><span class="cx">                 0F2D4DE919832DAC007D4B19 /* ToThisStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2D4DE619832DAC007D4B19 /* ToThisStatus.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 0F2D4DEA19832DAC007D4B19 /* TypeLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2D4DE719832DAC007D4B19 /* TypeLocation.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                0F2D4DEB19832DC4007D4B19 /* HighFidelityLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2D4DDF19832D91007D4B19 /* HighFidelityLog.cpp */; };
-                0F2D4DEC19832DC4007D4B19 /* HighFidelityLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2D4DE019832D91007D4B19 /* HighFidelityLog.h */; settings = {ATTRIBUTES = (Private, ); }; };
-                0F2D4DED19832DC4007D4B19 /* HighFidelityTypeProfiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2D4DE119832D91007D4B19 /* HighFidelityTypeProfiler.cpp */; };
-                0F2D4DEE19832DC4007D4B19 /* HighFidelityTypeProfiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2D4DE219832D91007D4B19 /* HighFidelityTypeProfiler.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><ins>+                0F2D4DEB19832DC4007D4B19 /* TypeProfilerLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2D4DDF19832D91007D4B19 /* TypeProfilerLog.cpp */; };
+                0F2D4DEC19832DC4007D4B19 /* TypeProfilerLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2D4DE019832D91007D4B19 /* TypeProfilerLog.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 0F2D4DEF19832DD3007D4B19 /* TypeSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2D4DE319832D91007D4B19 /* TypeSet.cpp */; };
</span><span class="cx">                 0F2D4DF019832DD6007D4B19 /* TypeSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2D4DE419832D91007D4B19 /* TypeSet.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 0F2E892C16D028AD009E4FD2 /* UnusedPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 65987F2F16828A7E003C2F8D /* UnusedPointer.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -867,6 +865,8 @@
</span><span class="cx">                 52B310FD1974AE870080857C /* FunctionHasExecutedCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52B310FC1974AE870080857C /* FunctionHasExecutedCache.cpp */; };
</span><span class="cx">                 52B310FF1975B4240080857C /* TypeLocationCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52B310FE1975B4240080857C /* TypeLocationCache.cpp */; };
</span><span class="cx">                 52B311011975B4670080857C /* TypeLocationCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 52B311001975B4670080857C /* TypeLocationCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                52C952B719A289850069B386 /* TypeProfiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 52C952B619A289850069B386 /* TypeProfiler.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                52C952B919A28A1C0069B386 /* TypeProfiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52C952B819A28A1C0069B386 /* TypeProfiler.cpp */; };
</ins><span class="cx">                 5510502618EB827500001F3E /* JSCallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 1440F88F0A508B100005F061 /* JSCallbackFunction.h */; };
</span><span class="cx">                 552EA70C1908704800A66F2F /* JSDataViewPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66BF17B6B5AB00A7AE3F /* JSDataViewPrototype.cpp */; };
</span><span class="cx">                 5540757218DA58AD00EFF7F2 /* ArgList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF605120E203EF800B9A64D /* ArgList.h */; };
</span><span class="lines">@@ -2131,10 +2131,8 @@
</span><span class="cx">                 0F2BDC5015228FFA00CD8910 /* DFGVariableEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGVariableEvent.cpp; path = dfg/DFGVariableEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0F2D4DDB19832D34007D4B19 /* DebuggerScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebuggerScope.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0F2D4DDC19832D34007D4B19 /* DebuggerScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebuggerScope.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                0F2D4DDF19832D91007D4B19 /* HighFidelityLog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = HighFidelityLog.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0F2D4DE019832D91007D4B19 /* HighFidelityLog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HighFidelityLog.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0F2D4DE119832D91007D4B19 /* HighFidelityTypeProfiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = HighFidelityTypeProfiler.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0F2D4DE219832D91007D4B19 /* HighFidelityTypeProfiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HighFidelityTypeProfiler.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                0F2D4DDF19832D91007D4B19 /* TypeProfilerLog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TypeProfilerLog.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                0F2D4DE019832D91007D4B19 /* TypeProfilerLog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TypeProfilerLog.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 0F2D4DE319832D91007D4B19 /* TypeSet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TypeSet.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0F2D4DE419832D91007D4B19 /* TypeSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TypeSet.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0F2D4DE519832DAC007D4B19 /* ToThisStatus.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ToThisStatus.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2740,6 +2738,8 @@
</span><span class="cx">                 52B310FC1974AE870080857C /* FunctionHasExecutedCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FunctionHasExecutedCache.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 52B310FE1975B4240080857C /* TypeLocationCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TypeLocationCache.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 52B311001975B4670080857C /* TypeLocationCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TypeLocationCache.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                52C952B619A289850069B386 /* TypeProfiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TypeProfiler.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                52C952B819A28A1C0069B386 /* TypeProfiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TypeProfiler.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 5540758418F4A37500602A5D /* CompileRuntimeToLLVMIR.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = CompileRuntimeToLLVMIR.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 55407AC818DA58AD00EFF7F2 /* libCompileRuntimeToLLVMIR.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCompileRuntimeToLLVMIR.a; sourceTree = BUILT_PRODUCTS_DIR; };
</span><span class="cx">                 5D53726D0E1C546B0021E549 /* Tracing.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Tracing.d; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -4399,6 +4399,7 @@
</span><span class="cx">                                 BCD203480E17135E002C7E82 /* DatePrototype.h */,
</span><span class="cx">                                 A70447EB17A0BD7000F5898E /* DumpContext.cpp */,
</span><span class="cx">                                 A70447EC17A0BD7000F5898E /* DumpContext.h */,
</span><ins>+                                2AD2EDFA19799E38004D6478 /* EnumerationMode.h */,
</ins><span class="cx">                                 BC337BEA0E1B00CB0076918A /* Error.cpp */,
</span><span class="cx">                                 BC3046060E1F497F003232CF /* Error.h */,
</span><span class="cx">                                 BC02E9040E1839DB000F9297 /* ErrorConstructor.cpp */,
</span><span class="lines">@@ -4421,18 +4422,14 @@
</span><span class="cx">                                 BC2680C10E16D4E900A06E92 /* FunctionConstructor.h */,
</span><span class="cx">                                 0FB4B52116B6278D003F696B /* FunctionExecutableDump.cpp */,
</span><span class="cx">                                 0FB4B52216B6278D003F696B /* FunctionExecutableDump.h */,
</span><ins>+                                52B310FC1974AE870080857C /* FunctionHasExecutedCache.cpp */,
</ins><span class="cx">                                 52B310FA1974AE610080857C /* FunctionHasExecutedCache.h */,
</span><del>-                                52B310FC1974AE870080857C /* FunctionHasExecutedCache.cpp */,
</del><span class="cx">                                 F692A85C0255597D01FF60F7 /* FunctionPrototype.cpp */,
</span><span class="cx">                                 F692A85D0255597D01FF60F7 /* FunctionPrototype.h */,
</span><span class="cx">                                 0F2B66B217B6B5AB00A7AE3F /* GenericTypedArrayView.h */,
</span><span class="cx">                                 0F2B66B317B6B5AB00A7AE3F /* GenericTypedArrayViewInlines.h */,
</span><span class="cx">                                 BC02E9B80E184545000F9297 /* GetterSetter.cpp */,
</span><span class="cx">                                 BC337BDE0E1AF0B80076918A /* GetterSetter.h */,
</span><del>-                                0F2D4DDF19832D91007D4B19 /* HighFidelityLog.cpp */,
-                                0F2D4DE019832D91007D4B19 /* HighFidelityLog.h */,
-                                0F2D4DE119832D91007D4B19 /* HighFidelityTypeProfiler.cpp */,
-                                0F2D4DE219832D91007D4B19 /* HighFidelityTypeProfiler.h */,
</del><span class="cx">                                 933A349D038AE80F008635CE /* Identifier.cpp */,
</span><span class="cx">                                 933A349A038AE7C6008635CE /* Identifier.h */,
</span><span class="cx">                                 8606DDE918DA44AB00A383D0 /* IdentifierInlines.h */,
</span><span class="lines">@@ -4442,9 +4439,9 @@
</span><span class="cx">                                 0FB7F38F15ED8E3800F167B2 /* IndexingType.h */,
</span><span class="cx">                                 E178636C0D9BEEC300D74E75 /* InitializeThreading.cpp */,
</span><span class="cx">                                 E178633F0D9BEC0000D74E75 /* InitializeThreading.h */,
</span><ins>+                                A7A8AF2B17ADB5F3005AB174 /* Int8Array.h */,
</ins><span class="cx">                                 A7A8AF2C17ADB5F3005AB174 /* Int16Array.h */,
</span><span class="cx">                                 A7A8AF2D17ADB5F3005AB174 /* Int32Array.h */,
</span><del>-                                A7A8AF2B17ADB5F3005AB174 /* Int8Array.h */,
</del><span class="cx">                                 A78853F717972629001440E4 /* IntendedStructureChain.cpp */,
</span><span class="cx">                                 A78853F817972629001440E4 /* IntendedStructureChain.h */,
</span><span class="cx">                                 BC9BB95B0E19680600DF8855 /* InternalFunction.cpp */,
</span><span class="lines">@@ -4503,9 +4500,9 @@
</span><span class="cx">                                 A59455911824744700CC3843 /* JSGlobalObjectDebuggable.h */,
</span><span class="cx">                                 BC756FC60E2031B200DE7D12 /* JSGlobalObjectFunctions.cpp */,
</span><span class="cx">                                 BC756FC70E2031B200DE7D12 /* JSGlobalObjectFunctions.h */,
</span><ins>+                                0F2B66C917B6B5AB00A7AE3F /* JSInt8Array.h */,
</ins><span class="cx">                                 0F2B66CA17B6B5AB00A7AE3F /* JSInt16Array.h */,
</span><span class="cx">                                 0F2B66CB17B6B5AB00A7AE3F /* JSInt32Array.h */,
</span><del>-                                0F2B66C917B6B5AB00A7AE3F /* JSInt8Array.h */,
</del><span class="cx">                                 65EA4C99092AF9E20093D800 /* JSLock.cpp */,
</span><span class="cx">                                 65EA4C9A092AF9E20093D800 /* JSLock.h */,
</span><span class="cx">                                 A700873F17CBE8EB00C3E643 /* JSMap.cpp */,
</span><span class="lines">@@ -4532,6 +4529,8 @@
</span><span class="cx">                                 7C184E1D17BEE22E007CB63A /* JSPromisePrototype.h */,
</span><span class="cx">                                 7C008CDC1871258D00955C24 /* JSPromiseReaction.cpp */,
</span><span class="cx">                                 7C008CDD1871258D00955C24 /* JSPromiseReaction.h */,
</span><ins>+                                2A05ABD31961DF2400341750 /* JSPropertyNameEnumerator.cpp */,
+                                2A05ABD41961DF2400341750 /* JSPropertyNameEnumerator.h */,
</ins><span class="cx">                                 862553CE16136AA5009F17D0 /* JSProxy.cpp */,
</span><span class="cx">                                 862553CF16136AA5009F17D0 /* JSProxy.h */,
</span><span class="cx">                                 14874AE115EBDE4A002E3587 /* JSScope.cpp */,
</span><span class="lines">@@ -4557,10 +4556,10 @@
</span><span class="cx">                                 0F2B66D017B6B5AB00A7AE3F /* JSTypedArrays.cpp */,
</span><span class="cx">                                 0F2B66D117B6B5AB00A7AE3F /* JSTypedArrays.h */,
</span><span class="cx">                                 6507D2970E871E4A00D7D896 /* JSTypeInfo.h */,
</span><ins>+                                0F2B66D217B6B5AB00A7AE3F /* JSUint8Array.h */,
+                                0F2B66D317B6B5AB00A7AE3F /* JSUint8ClampedArray.h */,
</ins><span class="cx">                                 0F2B66D417B6B5AB00A7AE3F /* JSUint16Array.h */,
</span><span class="cx">                                 0F2B66D517B6B5AB00A7AE3F /* JSUint32Array.h */,
</span><del>-                                0F2B66D217B6B5AB00A7AE3F /* JSUint8Array.h */,
-                                0F2B66D317B6B5AB00A7AE3F /* JSUint8ClampedArray.h */,
</del><span class="cx">                                 BC22A39A0E16E14800AF21C8 /* JSVariableObject.cpp */,
</span><span class="cx">                                 14F252560D08DD8D004ECFFF /* JSVariableObject.h */,
</span><span class="cx">                                 A7CA3AE117DA41AE006538AF /* JSWeakMap.cpp */,
</span><span class="lines">@@ -4702,15 +4701,19 @@
</span><span class="cx">                                 0F2B66DB17B6B5AB00A7AE3F /* TypedArrays.h */,
</span><span class="cx">                                 0F2B66DC17B6B5AB00A7AE3F /* TypedArrayType.cpp */,
</span><span class="cx">                                 0F2B66DD17B6B5AB00A7AE3F /* TypedArrayType.h */,
</span><ins>+                                52B310FE1975B4240080857C /* TypeLocationCache.cpp */,
</ins><span class="cx">                                 52B311001975B4670080857C /* TypeLocationCache.h */,
</span><del>-                                52B310FE1975B4240080857C /* TypeLocationCache.cpp */,
</del><ins>+                                52C952B819A28A1C0069B386 /* TypeProfiler.cpp */,
+                                52C952B619A289850069B386 /* TypeProfiler.h */,
+                                0F2D4DDF19832D91007D4B19 /* TypeProfilerLog.cpp */,
+                                0F2D4DE019832D91007D4B19 /* TypeProfilerLog.h */,
</ins><span class="cx">                                 0F2D4DE319832D91007D4B19 /* TypeSet.cpp */,
</span><span class="cx">                                 0F2D4DE419832D91007D4B19 /* TypeSet.h */,
</span><ins>+                                A7A8AF3017ADB5F3005AB174 /* Uint8Array.h */,
+                                A7A8AF3117ADB5F3005AB174 /* Uint8ClampedArray.h */,
</ins><span class="cx">                                 A7A8AF3217ADB5F3005AB174 /* Uint16Array.h */,
</span><span class="cx">                                 866739D113BFDE710023D87C /* Uint16WithFraction.h */,
</span><span class="cx">                                 A7A8AF3317ADB5F3005AB174 /* Uint32Array.h */,
</span><del>-                                A7A8AF3017ADB5F3005AB174 /* Uint8Array.h */,
-                                A7A8AF3117ADB5F3005AB174 /* Uint8ClampedArray.h */,
</del><span class="cx">                                 E18E3A570DF9278C00D90B34 /* VM.cpp */,
</span><span class="cx">                                 E18E3A560DF9278C00D90B34 /* VM.h */,
</span><span class="cx">                                 FE5932A5183C5A2600A1ECCC /* VMEntryScope.cpp */,
</span><span class="lines">@@ -4728,9 +4731,6 @@
</span><span class="cx">                                 1420BE7A10AA6DDB00F455D2 /* WeakRandom.h */,
</span><span class="cx">                                 A7DCB77912E3D90500911940 /* WriteBarrier.h */,
</span><span class="cx">                                 C2B6D75218A33793004A9301 /* WriteBarrierInlines.h */,
</span><del>-                                2A05ABD31961DF2400341750 /* JSPropertyNameEnumerator.cpp */,
-                                2A05ABD41961DF2400341750 /* JSPropertyNameEnumerator.h */,
-                                2AD2EDFA19799E38004D6478 /* EnumerationMode.h */,
</del><span class="cx">                         );
</span><span class="cx">                         path = runtime;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -6075,7 +6075,7 @@
</span><span class="cx">                                 C283190016FE4B7D00157BFD /* HandleBlock.h in Headers */,
</span><span class="cx">                                 C283190216FE533E00157BFD /* HandleBlockInlines.h in Headers */,
</span><span class="cx">                                 0F0B83A914BCF56200885B4F /* HandlerInfo.h in Headers */,
</span><del>-                                0F2D4DEC19832DC4007D4B19 /* HighFidelityLog.h in Headers */,
</del><ins>+                                0F2D4DEC19832DC4007D4B19 /* TypeProfilerLog.h in Headers */,
</ins><span class="cx">                                 142E3136134FF0A600AFADB5 /* HandleSet.h in Headers */,
</span><span class="cx">                                 142E3138134FF0A600AFADB5 /* HandleStack.h in Headers */,
</span><span class="cx">                                 1478297B1379E8A800A7C2A3 /* HandleTypes.h in Headers */,
</span><span class="lines">@@ -6116,7 +6116,6 @@
</span><span class="cx">                                 A53243981856A489002ED692 /* InspectorJS.json in Headers */,
</span><span class="cx">                                 A532438818568335002ED692 /* InspectorJSBackendDispatchers.h in Headers */,
</span><span class="cx">                                 A532438A18568335002ED692 /* InspectorJSFrontendDispatchers.h in Headers */,
</span><del>-                                0F2D4DEE19832DC4007D4B19 /* HighFidelityTypeProfiler.h in Headers */,
</del><span class="cx">                                 8606DDEA18DA44AB00A383D0 /* IdentifierInlines.h in Headers */,
</span><span class="cx">                                 A532438C18568335002ED692 /* InspectorJSTypeBuilders.h in Headers */,
</span><span class="cx">                                 A50E4B6218809DD50068A46D /* InspectorRuntimeAgent.h in Headers */,
</span><span class="lines">@@ -6391,6 +6390,7 @@
</span><span class="cx">                                 52B311011975B4670080857C /* TypeLocationCache.h in Headers */,
</span><span class="cx">                                 0FF729BE166AD360000F5BA3 /* ProfilerExecutionCounter.h in Headers */,
</span><span class="cx">                                 0F190CAD189D82F6000AE5F0 /* ProfilerJettisonReason.h in Headers */,
</span><ins>+                                52C952B719A289850069B386 /* TypeProfiler.h in Headers */,
</ins><span class="cx">                                 0FF729BF166AD360000F5BA3 /* ProfilerOrigin.h in Headers */,
</span><span class="cx">                                 0FF729C0166AD360000F5BA3 /* ProfilerOriginStack.h in Headers */,
</span><span class="cx">                                 0FB1058C1675483300F8AB6E /* ProfilerOSRExit.h in Headers */,
</span><span class="lines">@@ -7104,9 +7104,9 @@
</span><span class="cx">                         isa = PBXSourcesBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><del>-                                52B310FF1975B4240080857C /* TypeLocationCache.cpp in Sources */,
</del><span class="cx">                                 9EA5C7A2190F088700508EBE /* InitializeLLVMMac.cpp in Sources */,
</span><span class="cx">                                 9EA5C7A1190F084200508EBE /* BundlePath.mm in Sources */,
</span><ins>+                                52B310FF1975B4240080857C /* TypeLocationCache.cpp in Sources */,
</ins><span class="cx">                                 9E729408190F021E001A91B5 /* InitializeLLVMPOSIX.cpp in Sources */,
</span><span class="cx">                                 9E729407190F01A5001A91B5 /* InitializeThreading.cpp in Sources */,
</span><span class="cx">                                 0FFA549716B8835000B3A982 /* A64DOpcode.cpp in Sources */,
</span><span class="lines">@@ -7185,7 +7185,6 @@
</span><span class="cx">                                 0F485321187750560083B687 /* DFGArithMode.cpp in Sources */,
</span><span class="cx">                                 0F2D4DDD19832D34007D4B19 /* DebuggerScope.cpp in Sources */,
</span><span class="cx">                                 0F63948415E48118006A597C /* DFGArrayMode.cpp in Sources */,
</span><del>-                                0F2D4DED19832DC4007D4B19 /* HighFidelityTypeProfiler.cpp in Sources */,
</del><span class="cx">                                 A7D9A29417A0BC7400EE2618 /* DFGAtTailAbstractState.cpp in Sources */,
</span><span class="cx">                                 0F666EC61835672B00D017F1 /* DFGAvailability.cpp in Sources */,
</span><span class="cx">                                 0F714CA416EA92F000F3EBEB /* DFGBackwardsPropagationPhase.cpp in Sources */,
</span><span class="lines">@@ -7308,7 +7307,7 @@
</span><span class="cx">                                 A7B48F490EE8936F00DCBDB6 /* ExecutableAllocator.cpp in Sources */,
</span><span class="cx">                                 86DB64640F95C6FC00D7D921 /* ExecutableAllocatorFixedVMPool.cpp in Sources */,
</span><span class="cx">                                 0F56A1D515001CF4002992B1 /* ExecutionCounter.cpp in Sources */,
</span><del>-                                0F2D4DEB19832DC4007D4B19 /* HighFidelityLog.cpp in Sources */,
</del><ins>+                                0F2D4DEB19832DC4007D4B19 /* TypeProfilerLog.cpp in Sources */,
</ins><span class="cx">                                 0F0332C018ADFAE1005F979A /* ExitingJITType.cpp in Sources */,
</span><span class="cx">                                 0FB105851675480F00F8AB6E /* ExitKind.cpp in Sources */,
</span><span class="cx">                                 0FEA0A1C1708B00700BB722C /* FTLAbstractHeap.cpp in Sources */,
</span><span class="lines">@@ -7642,6 +7641,7 @@
</span><span class="cx">                                 A7386555118697B400540279 /* ThunkGenerators.cpp in Sources */,
</span><span class="cx">                                 0F2B670717B6B5AB00A7AE3F /* TypedArrayController.cpp in Sources */,
</span><span class="cx">                                 0F2B670A17B6B5AB00A7AE3F /* TypedArrayType.cpp in Sources */,
</span><ins>+                                52C952B919A28A1C0069B386 /* TypeProfiler.cpp in Sources */,
</ins><span class="cx">                                 0FF4274A158EBE91004CB9FF /* udis86.c in Sources */,
</span><span class="cx">                                 0FF42740158EBE8B004CB9FF /* udis86_decode.c in Sources */,
</span><span class="cx">                                 0FF42743158EBE91004CB9FF /* udis86_input.c in Sources */,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeListjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/BytecodeList.json (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeList.json        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeList.json        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -120,7 +120,7 @@
</span><span class="cx">             { &quot;name&quot; : &quot;op_profile_will_call&quot;, &quot;length&quot; : 2 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_profile_did_call&quot;, &quot;length&quot; : 2 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_end&quot;, &quot;length&quot; : 2 },
</span><del>-            { &quot;name&quot; : &quot;op_profile_types_with_high_fidelity&quot;, &quot;length&quot; : 6 },
</del><ins>+            { &quot;name&quot; : &quot;op_profile_type&quot;, &quot;length&quot; : 6 },
</ins><span class="cx">             { &quot;name&quot; : &quot;op_get_enumerable_length&quot;, &quot;length&quot; : 3 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_has_indexed_property&quot;, &quot;length&quot; : 5 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_has_structure_property&quot;, &quot;length&quot; : 5 },
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeUseDefh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx">     case op_tear_off_activation:
</span><span class="cx">     case op_profile_will_call:
</span><span class="cx">     case op_profile_did_call:
</span><del>-    case op_profile_types_with_high_fidelity:
</del><ins>+    case op_profile_type:
</ins><span class="cx">     case op_throw:
</span><span class="cx">     case op_push_with_scope:
</span><span class="cx">     case op_end:
</span><span class="lines">@@ -287,7 +287,7 @@
</span><span class="cx">     case op_put_by_val_direct:
</span><span class="cx">     case op_put_by_index:
</span><span class="cx">     case op_tear_off_arguments:
</span><del>-    case op_profile_types_with_high_fidelity:
</del><ins>+    case op_profile_type:
</ins><span class="cx">     case op_touch_entry:
</span><span class="cx"> #define LLINT_HELPER_OPCODES(opcode, length) case opcode:
</span><span class="cx">         FOR_EACH_LLINT_OPCODE_EXTENSION(LLINT_HELPER_OPCODES);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -40,7 +40,6 @@
</span><span class="cx"> #include &quot;DFGWorklist.h&quot;
</span><span class="cx"> #include &quot;Debugger.h&quot;
</span><span class="cx"> #include &quot;FunctionExecutableDump.h&quot;
</span><del>-#include &quot;HighFidelityTypeProfiler.h&quot;
</del><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JITStubs.h&quot;
</span><span class="lines">@@ -49,7 +48,6 @@
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><span class="cx"> #include &quot;JSNameScope.h&quot;
</span><span class="cx"> #include &quot;LLIntEntrypoint.h&quot;
</span><del>-#include &quot;TypeLocationCache.h&quot;
</del><span class="cx"> #include &quot;LowLevelInterpreter.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;PolymorphicGetByIdList.h&quot;
</span><span class="lines">@@ -60,6 +58,8 @@
</span><span class="cx"> #include &quot;RepatchBuffer.h&quot;
</span><span class="cx"> #include &quot;SlotVisitorInlines.h&quot;
</span><span class="cx"> #include &quot;StackVisitor.h&quot;
</span><ins>+#include &quot;TypeLocationCache.h&quot;
+#include &quot;TypeProfiler.h&quot;
</ins><span class="cx"> #include &quot;UnlinkedInstructionStream.h&quot;
</span><span class="cx"> #include &lt;wtf/BagToHashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/CommaPrinter.h&gt;
</span><span class="lines">@@ -839,11 +839,11 @@
</span><span class="cx">             ++it;
</span><span class="cx">             break;
</span><span class="cx">         }
</span><del>-        case op_profile_types_with_high_fidelity: {
</del><ins>+        case op_profile_type: {
</ins><span class="cx">             int r0 = (++it)-&gt;u.operand;
</span><span class="cx">             ++it;
</span><span class="cx">             ++it;
</span><del>-            printLocationAndOp(out, exec, location, it, &quot;op_profile_types_with_high_fidelity&quot;);
</del><ins>+            printLocationAndOp(out, exec, location, it, &quot;op_profile_type&quot;);
</ins><span class="cx">             out.printf(&quot;%s&quot;, registerName(r0).data());
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="lines">@@ -1714,9 +1714,9 @@
</span><span class="cx">     bool didCloneSymbolTable = false;
</span><span class="cx">     
</span><span class="cx">     if (SymbolTable* symbolTable = unlinkedCodeBlock-&gt;symbolTable()) {
</span><del>-        if (m_vm-&gt;isProfilingTypesWithHighFidelity()) {
</del><ins>+        if (m_vm-&gt;typeProfiler()) {
</ins><span class="cx">             ConcurrentJITLocker locker(symbolTable-&gt;m_lock);
</span><del>-            symbolTable-&gt;prepareForHighFidelityTypeProfiling(locker);
</del><ins>+            symbolTable-&gt;prepareForTypeProfiling(locker);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (codeType() == FunctionCode &amp;&amp; symbolTable-&gt;captureCount()) {
</span><span class="lines">@@ -1729,8 +1729,8 @@
</span><span class="cx">     ASSERT(m_source);
</span><span class="cx">     setNumParameters(unlinkedCodeBlock-&gt;numParameters());
</span><span class="cx"> 
</span><del>-    if (vm()-&gt;isProfilingTypesWithHighFidelity())
-        vm()-&gt;highFidelityTypeProfiler()-&gt;functionHasExecutedCache()-&gt;removeUnexecutedRange(m_ownerExecutable-&gt;sourceID(), m_ownerExecutable-&gt;highFidelityTypeProfilingStartOffset(), m_ownerExecutable-&gt;highFidelityTypeProfilingEndOffset());
</del><ins>+    if (vm()-&gt;typeProfiler())
+        vm()-&gt;typeProfiler()-&gt;functionHasExecutedCache()-&gt;removeUnexecutedRange(m_ownerExecutable-&gt;sourceID(), m_ownerExecutable-&gt;typeProfilingStartOffset(), m_ownerExecutable-&gt;typeProfilingEndOffset());
</ins><span class="cx"> 
</span><span class="cx">     setConstantRegisters(unlinkedCodeBlock-&gt;constantRegisters());
</span><span class="cx">     if (unlinkedCodeBlock-&gt;usesGlobalObject())
</span><span class="lines">@@ -1738,8 +1738,8 @@
</span><span class="cx">     m_functionDecls.resizeToFit(unlinkedCodeBlock-&gt;numberOfFunctionDecls());
</span><span class="cx">     for (size_t count = unlinkedCodeBlock-&gt;numberOfFunctionDecls(), i = 0; i &lt; count; ++i) {
</span><span class="cx">         UnlinkedFunctionExecutable* unlinkedExecutable = unlinkedCodeBlock-&gt;functionDecl(i);
</span><del>-        if (vm()-&gt;isProfilingTypesWithHighFidelity())
-            vm()-&gt;highFidelityTypeProfiler()-&gt;functionHasExecutedCache()-&gt;insertUnexecutedRange(m_ownerExecutable-&gt;sourceID(), unlinkedExecutable-&gt;highFidelityTypeProfilingStartOffset(), unlinkedExecutable-&gt;highFidelityTypeProfilingEndOffset());
</del><ins>+        if (vm()-&gt;typeProfiler())
+            vm()-&gt;typeProfiler()-&gt;functionHasExecutedCache()-&gt;insertUnexecutedRange(m_ownerExecutable-&gt;sourceID(), unlinkedExecutable-&gt;typeProfilingStartOffset(), unlinkedExecutable-&gt;typeProfilingEndOffset());
</ins><span class="cx">         unsigned lineCount = unlinkedExecutable-&gt;lineCount();
</span><span class="cx">         unsigned firstLine = ownerExecutable-&gt;lineNo() + unlinkedExecutable-&gt;firstLineOffset();
</span><span class="cx">         bool startColumnIsOnOwnerStartLine = !unlinkedExecutable-&gt;firstLineOffset();
</span><span class="lines">@@ -1756,8 +1756,8 @@
</span><span class="cx">     m_functionExprs.resizeToFit(unlinkedCodeBlock-&gt;numberOfFunctionExprs());
</span><span class="cx">     for (size_t count = unlinkedCodeBlock-&gt;numberOfFunctionExprs(), i = 0; i &lt; count; ++i) {
</span><span class="cx">         UnlinkedFunctionExecutable* unlinkedExecutable = unlinkedCodeBlock-&gt;functionExpr(i);
</span><del>-        if (vm()-&gt;isProfilingTypesWithHighFidelity())
-            vm()-&gt;highFidelityTypeProfiler()-&gt;functionHasExecutedCache()-&gt;insertUnexecutedRange(m_ownerExecutable-&gt;sourceID(), unlinkedExecutable-&gt;highFidelityTypeProfilingStartOffset(), unlinkedExecutable-&gt;highFidelityTypeProfilingEndOffset());
</del><ins>+        if (vm()-&gt;typeProfiler())
+            vm()-&gt;typeProfiler()-&gt;functionHasExecutedCache()-&gt;insertUnexecutedRange(m_ownerExecutable-&gt;sourceID(), unlinkedExecutable-&gt;typeProfilingStartOffset(), unlinkedExecutable-&gt;typeProfilingEndOffset());
</ins><span class="cx">         unsigned lineCount = unlinkedExecutable-&gt;lineCount();
</span><span class="cx">         unsigned firstLine = ownerExecutable-&gt;lineNo() + unlinkedExecutable-&gt;firstLineOffset();
</span><span class="cx">         bool startColumnIsOnOwnerStartLine = !unlinkedExecutable-&gt;firstLineOffset();
</span><span class="lines">@@ -1992,23 +1992,23 @@
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        case op_profile_types_with_high_fidelity: {
-            // The format of this instruction is: op_profile_types_with_high_fidelity regToProfile, TypeLocation*, flag, identifier?, resolveType?
</del><ins>+        case op_profile_type: {
+            // The format of this instruction is: op_profile_type regToProfile, TypeLocation*, flag, identifier?, resolveType?
</ins><span class="cx">             size_t instructionOffset = i + opLength - 1;
</span><span class="cx">             unsigned divotStart, divotEnd;
</span><span class="cx">             GlobalVariableID globalVariableID;
</span><span class="cx">             RefPtr&lt;TypeSet&gt; globalTypeSet;
</span><del>-            bool shouldAnalyze = m_unlinkedCode-&gt;highFidelityTypeProfileExpressionInfoForBytecodeOffset(instructionOffset, divotStart, divotEnd);
</del><ins>+            bool shouldAnalyze = m_unlinkedCode-&gt;typeProfilerExpressionInfoForBytecodeOffset(instructionOffset, divotStart, divotEnd);
</ins><span class="cx">             VirtualRegister profileRegister(pc[1].u.operand);
</span><del>-            ProfileTypesWithHighFidelityBytecodeFlag flag = static_cast&lt;ProfileTypesWithHighFidelityBytecodeFlag&gt;(pc[3].u.operand);
</del><ins>+            ProfileTypeBytecodeFlag flag = static_cast&lt;ProfileTypeBytecodeFlag&gt;(pc[3].u.operand);
</ins><span class="cx">             SymbolTable* symbolTable = nullptr;
</span><span class="cx"> 
</span><span class="cx">             switch (flag) {
</span><del>-            case ProfileTypesBytecodePutToScope:
-            case ProfileTypesBytecodeGetFromScope: {
</del><ins>+            case ProfileTypeBytecodePutToScope:
+            case ProfileTypeBytecodeGetFromScope: {
</ins><span class="cx">                 const Identifier&amp; ident = identifier(pc[4].u.operand);
</span><span class="cx">                 ResolveType type = static_cast&lt;ResolveType&gt;(pc[5].u.operand);
</span><del>-                ResolveOp op = JSScope::abstractResolve(m_globalObject-&gt;globalExec(), needsActivation(), scope, ident, (flag == ProfileTypesBytecodeGetFromScope ? Get : Put), type);
</del><ins>+                ResolveOp op = JSScope::abstractResolve(m_globalObject-&gt;globalExec(), needsActivation(), scope, ident, (flag == ProfileTypeBytecodeGetFromScope ? Get : Put), type);
</ins><span class="cx"> 
</span><span class="cx">                 // FIXME: handle other values for op.type here, and also consider what to do when we can't statically determine the globalID
</span><span class="cx">                 // https://bugs.webkit.org/show_bug.cgi?id=135184
</span><span class="lines">@@ -2020,29 +2020,29 @@
</span><span class="cx">                 if (symbolTable) {
</span><span class="cx">                     ConcurrentJITLocker locker(symbolTable-&gt;m_lock);
</span><span class="cx">                     // If our parent scope was created while profiling was disabled, it will not have prepared for profiling yet.
</span><del>-                    symbolTable-&gt;prepareForHighFidelityTypeProfiling(locker);
</del><ins>+                    symbolTable-&gt;prepareForTypeProfiling(locker);
</ins><span class="cx">                     globalVariableID = symbolTable-&gt;uniqueIDForVariable(locker, ident.impl(), *vm());
</span><span class="cx">                     globalTypeSet = symbolTable-&gt;globalTypeSetForVariable(locker, ident.impl(), *vm());
</span><span class="cx">                 } else
</span><del>-                    globalVariableID = HighFidelityNoGlobalIDExists;
</del><ins>+                    globalVariableID = TypeProfilerNoGlobalIDExists;
</ins><span class="cx"> 
</span><span class="cx">                 break;
</span><span class="cx">             }
</span><del>-            case ProfileTypesBytecodeHasGlobalID: {
</del><ins>+            case ProfileTypeBytecodeHasGlobalID: {
</ins><span class="cx">                 symbolTable = m_symbolTable.get();
</span><span class="cx">                 ConcurrentJITLocker locker(symbolTable-&gt;m_lock);
</span><span class="cx">                 globalVariableID = symbolTable-&gt;uniqueIDForRegister(locker, profileRegister.offset(), *vm());
</span><span class="cx">                 globalTypeSet = symbolTable-&gt;globalTypeSetForRegister(locker, profileRegister.offset(), *vm());
</span><span class="cx">                 break;
</span><span class="cx">             }
</span><del>-            case ProfileTypesBytecodeDoesNotHaveGlobalID: 
-            case ProfileTypesBytecodeFunctionArgument: {
-                globalVariableID = HighFidelityNoGlobalIDExists;
</del><ins>+            case ProfileTypeBytecodeDoesNotHaveGlobalID: 
+            case ProfileTypeBytecodeFunctionArgument: {
+                globalVariableID = TypeProfilerNoGlobalIDExists;
</ins><span class="cx">                 break;
</span><span class="cx">             }
</span><del>-            case ProfileTypesBytecodeFunctionReturnStatement: {
</del><ins>+            case ProfileTypeBytecodeFunctionReturnStatement: {
</ins><span class="cx">                 globalTypeSet = returnStatementTypeSet();
</span><del>-                globalVariableID = HighFidelityReturnStatement;
</del><ins>+                globalVariableID = TypeProfilerReturnStatement;
</ins><span class="cx">                 if (!shouldAnalyze) {
</span><span class="cx">                     // Because some return statements are added implicitly (to return undefined at the end of a function), and these nodes don't emit expression ranges, give them some range.
</span><span class="cx">                     // Currently, this divot is on the open brace of the function. 
</span><span class="lines">@@ -2053,16 +2053,16 @@
</span><span class="cx">             }
</span><span class="cx">             }
</span><span class="cx"> 
</span><del>-            std::pair&lt;TypeLocation*, bool&gt; locationPair = vm()-&gt;highFidelityTypeProfiler()-&gt;typeLocationCache()-&gt;getTypeLocation(globalVariableID,
</del><ins>+            std::pair&lt;TypeLocation*, bool&gt; locationPair = vm()-&gt;typeProfiler()-&gt;typeLocationCache()-&gt;getTypeLocation(globalVariableID,
</ins><span class="cx">                 m_ownerExecutable-&gt;sourceID(), divotStart, divotEnd, globalTypeSet, vm());
</span><span class="cx">             TypeLocation* location = locationPair.first;
</span><span class="cx">             bool isNewLocation = locationPair.second;
</span><span class="cx"> 
</span><del>-            if (ProfileTypesBytecodeFunctionReturnStatement)
</del><ins>+            if (ProfileTypeBytecodeFunctionReturnStatement)
</ins><span class="cx">                 location-&gt;m_divotForFunctionOffsetIfReturnStatement = m_sourceOffset;
</span><span class="cx"> 
</span><span class="cx">             if (shouldAnalyze &amp;&amp; isNewLocation)
</span><del>-                vm()-&gt;highFidelityTypeProfiler()-&gt;insertNewLocation(location);
</del><ins>+                vm()-&gt;typeProfiler()-&gt;insertNewLocation(location);
</ins><span class="cx"> 
</span><span class="cx">             instructions[i + 2].u.location = location;
</span><span class="cx">             break;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeTypeLocationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/TypeLocation.h (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/TypeLocation.h        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/bytecode/TypeLocation.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -30,10 +30,10 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><del>-enum HighFidelityGlobalIDFlags {
-    HighFidelityNeedsUniqueIDGeneration = -1,
-    HighFidelityNoGlobalIDExists = -2,
-    HighFidelityReturnStatement = -3
</del><ins>+enum TypeProfilerGlobalIDFlags {
+    TypeProfilerNeedsUniqueIDGeneration = -1,
+    TypeProfilerNoGlobalIDExists = -2,
+    TypeProfilerReturnStatement = -3
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> typedef intptr_t GlobalVariableID;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -99,8 +99,8 @@
</span><span class="cx">     , m_unlinkedBodyEndColumn(m_lineCount ? node-&gt;endColumn() : node-&gt;endColumn() - node-&gt;startColumn())
</span><span class="cx">     , m_startOffset(node-&gt;source().startOffset() - source.startOffset())
</span><span class="cx">     , m_sourceLength(node-&gt;source().length())
</span><del>-    , m_highFidelityTypeProfilingStartOffset(node-&gt;functionNameStart())
-    , m_highFidelityTypeProfilingEndOffset(node-&gt;startStartOffset() + node-&gt;source().length() - 1)
</del><ins>+    , m_typeProfilingStartOffset(node-&gt;functionNameStart())
+    , m_typeProfilingEndOffset(node-&gt;startStartOffset() + node-&gt;source().length() - 1)
</ins><span class="cx">     , m_features(node-&gt;features())
</span><span class="cx">     , m_functionMode(node-&gt;functionMode())
</span><span class="cx"> {
</span><span class="lines">@@ -402,11 +402,11 @@
</span><span class="cx">     m_expressionInfo.append(info);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool UnlinkedCodeBlock::highFidelityTypeProfileExpressionInfoForBytecodeOffset(unsigned bytecodeOffset, unsigned&amp; startDivot, unsigned&amp; endDivot)
</del><ins>+bool UnlinkedCodeBlock::typeProfilerExpressionInfoForBytecodeOffset(unsigned bytecodeOffset, unsigned&amp; startDivot, unsigned&amp; endDivot)
</ins><span class="cx"> {
</span><span class="cx">     static const bool verbose = false;
</span><del>-    auto iter = m_highFidelityTypeProfileInfoMap.find(bytecodeOffset);
-    if (iter == m_highFidelityTypeProfileInfoMap.end()) {
</del><ins>+    auto iter = m_typeProfilerInfoMap.find(bytecodeOffset);
+    if (iter == m_typeProfilerInfoMap.end()) {
</ins><span class="cx">         if (verbose)
</span><span class="cx">             dataLogF(&quot;Don't have assignment info for offset:%u\n&quot;, bytecodeOffset);
</span><span class="cx">         startDivot = UINT_MAX;
</span><span class="lines">@@ -414,18 +414,18 @@
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    HighFidelityTypeProfileExpressionRange&amp; range = iter-&gt;value;
</del><ins>+    TypeProfilerExpressionRange&amp; range = iter-&gt;value;
</ins><span class="cx">     startDivot = range.m_startDivot;
</span><span class="cx">     endDivot = range.m_endDivot;
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void UnlinkedCodeBlock::addHighFidelityTypeProfileExpressionInfo(unsigned instructionOffset, unsigned startDivot, unsigned endDivot)
</del><ins>+void UnlinkedCodeBlock::addTypeProfilerExpressionInfo(unsigned instructionOffset, unsigned startDivot, unsigned endDivot)
</ins><span class="cx"> {
</span><del>-    HighFidelityTypeProfileExpressionRange range;
</del><ins>+    TypeProfilerExpressionRange range;
</ins><span class="cx">     range.m_startDivot = startDivot;
</span><span class="cx">     range.m_endDivot = endDivot;
</span><del>-    m_highFidelityTypeProfileInfoMap.set(instructionOffset, range);  
</del><ins>+    m_typeProfilerInfoMap.set(instructionOffset, range);  
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void UnlinkedProgramCodeBlock::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -125,8 +125,8 @@
</span><span class="cx">     unsigned unlinkedBodyEndColumn() const { return m_unlinkedBodyEndColumn; }
</span><span class="cx">     unsigned startOffset() const { return m_startOffset; }
</span><span class="cx">     unsigned sourceLength() { return m_sourceLength; }
</span><del>-    unsigned highFidelityTypeProfilingStartOffset() const { return m_highFidelityTypeProfilingStartOffset; }
-    unsigned highFidelityTypeProfilingEndOffset() const { return m_highFidelityTypeProfilingEndOffset; }
</del><ins>+    unsigned typeProfilingStartOffset() const { return m_typeProfilingStartOffset; }
+    unsigned typeProfilingEndOffset() const { return m_typeProfilingEndOffset; }
</ins><span class="cx"> 
</span><span class="cx">     String paramString() const;
</span><span class="cx"> 
</span><span class="lines">@@ -187,8 +187,8 @@
</span><span class="cx">     unsigned m_unlinkedBodyEndColumn;
</span><span class="cx">     unsigned m_startOffset;
</span><span class="cx">     unsigned m_sourceLength;
</span><del>-    unsigned m_highFidelityTypeProfilingStartOffset;
-    unsigned m_highFidelityTypeProfilingEndOffset;
</del><ins>+    unsigned m_typeProfilingStartOffset;
+    unsigned m_typeProfilingEndOffset;
</ins><span class="cx"> 
</span><span class="cx">     CodeFeatures m_features;
</span><span class="cx"> 
</span><span class="lines">@@ -276,7 +276,7 @@
</span><span class="cx">     void addExpressionInfo(unsigned instructionOffset, int divot,
</span><span class="cx">         int startOffset, int endOffset, unsigned line, unsigned column);
</span><span class="cx"> 
</span><del>-    void addHighFidelityTypeProfileExpressionInfo(unsigned instructionOffset, unsigned startDivot, unsigned endDivot);
</del><ins>+    void addTypeProfilerExpressionInfo(unsigned instructionOffset, unsigned startDivot, unsigned endDivot);
</ins><span class="cx"> 
</span><span class="cx">     bool hasExpressionInfo() { return m_expressionInfo.size(); }
</span><span class="cx"> 
</span><span class="lines">@@ -470,7 +470,7 @@
</span><span class="cx">     void expressionRangeForBytecodeOffset(unsigned bytecodeOffset, int&amp; divot,
</span><span class="cx">         int&amp; startOffset, int&amp; endOffset, unsigned&amp; line, unsigned&amp; column);
</span><span class="cx"> 
</span><del>-    bool highFidelityTypeProfileExpressionInfoForBytecodeOffset(unsigned bytecodeOffset, unsigned&amp; startDivot, unsigned&amp; endDivot);
</del><ins>+    bool typeProfilerExpressionInfoForBytecodeOffset(unsigned bytecodeOffset, unsigned&amp; startDivot, unsigned&amp; endDivot);
</ins><span class="cx"> 
</span><span class="cx">     void recordParse(CodeFeatures features, bool hasCapturedVariables, unsigned firstLine, unsigned lineCount, unsigned endColumn)
</span><span class="cx">     {
</span><span class="lines">@@ -583,11 +583,11 @@
</span><span class="cx"> private:
</span><span class="cx">     OwnPtr&lt;RareData&gt; m_rareData;
</span><span class="cx">     Vector&lt;ExpressionRangeInfo&gt; m_expressionInfo;
</span><del>-    struct HighFidelityTypeProfileExpressionRange {
</del><ins>+    struct TypeProfilerExpressionRange {
</ins><span class="cx">         unsigned m_startDivot;
</span><span class="cx">         unsigned m_endDivot;
</span><span class="cx">     };
</span><del>-    HashMap&lt;unsigned, HighFidelityTypeProfileExpressionRange&gt; m_highFidelityTypeProfileInfoMap;
</del><ins>+    HashMap&lt;unsigned, TypeProfilerExpressionRange&gt; m_typeProfilerInfoMap;
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -115,7 +115,7 @@
</span><span class="cx"> 
</span><span class="cx">     m_codeBlock-&gt;shrinkToFit();
</span><span class="cx"> 
</span><del>-    if (m_codeBlock-&gt;symbolTable() &amp;&amp; !m_codeBlock-&gt;vm()-&gt;isProfilingTypesWithHighFidelity())
</del><ins>+    if (m_codeBlock-&gt;symbolTable() &amp;&amp; !m_codeBlock-&gt;vm()-&gt;typeProfiler())
</ins><span class="cx">         m_codeBlock-&gt;setSymbolTable(m_codeBlock-&gt;symbolTable()-&gt;cloneCapturedNames(*m_codeBlock-&gt;vm()));
</span><span class="cx"> 
</span><span class="cx">     if (m_expressionTooDeep)
</span><span class="lines">@@ -339,7 +339,7 @@
</span><span class="cx"> 
</span><span class="cx">     m_symbolTable-&gt;setCaptureEnd(virtualRegisterForLocal(codeBlock-&gt;m_numVars).offset());
</span><span class="cx"> 
</span><del>-    bool canLazilyCreateFunctions = !functionBody-&gt;needsActivationForMoreThanVariables() &amp;&amp; !m_shouldEmitDebugHooks &amp;&amp; !isProfilingTypesWithHighFidelity();
</del><ins>+    bool canLazilyCreateFunctions = !functionBody-&gt;needsActivationForMoreThanVariables() &amp;&amp; !m_shouldEmitDebugHooks &amp;&amp; !m_vm-&gt;typeProfiler();
</ins><span class="cx">     m_firstLazyFunction = codeBlock-&gt;m_numVars;
</span><span class="cx">     for (size_t i = 0; i &lt; functionStack.size(); ++i) {
</span><span class="cx">         FunctionBodyNode* function = functionStack[i];
</span><span class="lines">@@ -1006,8 +1006,8 @@
</span><span class="cx">     if (captureMode == IsCaptured)
</span><span class="cx">         instructions().append(watchableVariable(dst-&gt;index()));
</span><span class="cx"> 
</span><del>-    if (!dst-&gt;isTemporary() &amp;&amp; isProfilingTypesWithHighFidelity())
-        emitProfileTypesWithHighFidelity(dst, ProfileTypesBytecodeHasGlobalID, nullptr);
</del><ins>+    if (!dst-&gt;isTemporary() &amp;&amp; vm()-&gt;typeProfiler())
+        emitProfileType(dst, ProfileTypeBytecodeHasGlobalID, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     return dst;
</span><span class="cx"> }
</span><span class="lines">@@ -1118,21 +1118,21 @@
</span><span class="cx">     return dst;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void BytecodeGenerator::emitHighFidelityTypeProfilingExpressionInfo(const JSTextPosition&amp; startDivot, const JSTextPosition&amp; endDivot)
</del><ins>+void BytecodeGenerator::emitTypeProfilerExpressionInfo(const JSTextPosition&amp; startDivot, const JSTextPosition&amp; endDivot)
</ins><span class="cx"> {
</span><span class="cx">     unsigned start = startDivot.offset; // Ranges are inclusive of their endpoints, AND 0 indexed.
</span><span class="cx">     unsigned end = endDivot.offset - 1; // End Ranges already go one past the inclusive range, so subtract 1.
</span><span class="cx">     unsigned instructionOffset = instructions().size() - 1;
</span><del>-    m_codeBlock-&gt;addHighFidelityTypeProfileExpressionInfo(instructionOffset, start, end);
</del><ins>+    m_codeBlock-&gt;addTypeProfilerExpressionInfo(instructionOffset, start, end);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void BytecodeGenerator::emitProfileTypesWithHighFidelity(RegisterID* registerToProfile, ProfileTypesWithHighFidelityBytecodeFlag flag, const Identifier* identifier)
</del><ins>+void BytecodeGenerator::emitProfileType(RegisterID* registerToProfile, ProfileTypeBytecodeFlag flag, const Identifier* identifier)
</ins><span class="cx"> {
</span><del>-    if (flag == ProfileTypesBytecodeGetFromScope || flag == ProfileTypesBytecodePutToScope)
</del><ins>+    if (flag == ProfileTypeBytecodeGetFromScope || flag == ProfileTypeBytecodePutToScope)
</ins><span class="cx">         RELEASE_ASSERT(identifier);
</span><span class="cx"> 
</span><del>-    // The format of this instruction is: op_profile_types_with_high_fidelity regToProfile, TypeLocation*, flag, identifier?, resolveType?
-    emitOpcode(op_profile_types_with_high_fidelity);
</del><ins>+    // The format of this instruction is: op_profile_type regToProfile, TypeLocation*, flag, identifier?, resolveType?
+    emitOpcode(op_profile_type);
</ins><span class="cx">     instructions().append(registerToProfile-&gt;index());
</span><span class="cx">     instructions().append(0);
</span><span class="cx">     instructions().append(flag);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -220,13 +220,13 @@
</span><span class="cx">         TryData* tryData;
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    enum ProfileTypesWithHighFidelityBytecodeFlag {
-        ProfileTypesBytecodePutToScope,
-        ProfileTypesBytecodeGetFromScope,
-        ProfileTypesBytecodeHasGlobalID,
-        ProfileTypesBytecodeDoesNotHaveGlobalID,
-        ProfileTypesBytecodeFunctionArgument,
-        ProfileTypesBytecodeFunctionReturnStatement
</del><ins>+    enum ProfileTypeBytecodeFlag {
+        ProfileTypeBytecodePutToScope,
+        ProfileTypeBytecodeGetFromScope,
+        ProfileTypeBytecodeHasGlobalID,
+        ProfileTypeBytecodeDoesNotHaveGlobalID,
+        ProfileTypeBytecodeFunctionArgument,
+        ProfileTypeBytecodeFunctionReturnStatement
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     class BytecodeGenerator {
</span><span class="lines">@@ -407,8 +407,8 @@
</span><span class="cx">             return emitNode(n);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        void emitHighFidelityTypeProfilingExpressionInfo(const JSTextPosition&amp; startDivot, const JSTextPosition&amp; endDivot);
-        void emitProfileTypesWithHighFidelity(RegisterID* registerToProfile, ProfileTypesWithHighFidelityBytecodeFlag, const Identifier*);
</del><ins>+        void emitTypeProfilerExpressionInfo(const JSTextPosition&amp; startDivot, const JSTextPosition&amp; endDivot);
+        void emitProfileType(RegisterID* registerToProfile, ProfileTypeBytecodeFlag, const Identifier*);
</ins><span class="cx"> 
</span><span class="cx">         RegisterID* emitLoad(RegisterID* dst, bool);
</span><span class="cx">         RegisterID* emitLoad(RegisterID* dst, double);
</span><span class="lines">@@ -755,8 +755,6 @@
</span><span class="cx"> 
</span><span class="cx">         VM* m_vm;
</span><span class="cx"> 
</span><del>-        bool isProfilingTypesWithHighFidelity() { return vm()-&gt;isProfilingTypesWithHighFidelity(); }
-
</del><span class="cx">         OpcodeID m_lastOpcodeID;
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx">         size_t m_lastOpcodePosition;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerNodesCodegencpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -139,10 +139,10 @@
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     RegisterID* result = generator.moveToDestinationIfNeeded(dst, generator.thisRegister());
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(generator.thisRegister(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(generator.thisRegister(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
</ins><span class="cx">         static const unsigned thisLength = 4;
</span><del>-        generator.emitHighFidelityTypeProfilingExpressionInfo(position(), JSTextPosition(-1, position().offset + thisLength, -1));
</del><ins>+        generator.emitTypeProfilerExpressionInfo(position(), JSTextPosition(-1, position().offset + thisLength, -1));
</ins><span class="cx">     }
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="lines">@@ -159,9 +159,9 @@
</span><span class="cx">     if (Local local = generator.local(m_ident)) {
</span><span class="cx">         if (dst == generator.ignoredResult())
</span><span class="cx">             return 0;
</span><del>-        if (generator.isProfilingTypesWithHighFidelity()) {
-            generator.emitProfileTypesWithHighFidelity(local.get(), ProfileTypesBytecodeHasGlobalID, nullptr);
-            generator.emitHighFidelityTypeProfilingExpressionInfo(m_position, JSTextPosition(-1, m_position.offset + m_ident.length(), -1));
</del><ins>+        if (generator.vm()-&gt;typeProfiler()) {
+            generator.emitProfileType(local.get(), ProfileTypeBytecodeHasGlobalID, nullptr);
+            generator.emitTypeProfilerExpressionInfo(m_position, JSTextPosition(-1, m_position.offset + m_ident.length(), -1));
</ins><span class="cx">         }
</span><span class="cx">         return generator.moveToDestinationIfNeeded(dst, local.get());
</span><span class="cx">     }
</span><span class="lines">@@ -171,9 +171,9 @@
</span><span class="cx">     RefPtr&lt;RegisterID&gt; scope = generator.emitResolveScope(generator.tempDestination(dst), m_ident);
</span><span class="cx">     RegisterID* finalDest = generator.finalDestination(dst);
</span><span class="cx">     RegisterID* result = generator.emitGetFromScope(finalDest, scope.get(), m_ident, ThrowIfNotFound);
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(finalDest, ProfileTypesBytecodeGetFromScope, &amp;m_ident);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(m_position, JSTextPosition(-1, m_position.offset + m_ident.length(), -1));
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(finalDest, ProfileTypeBytecodeGetFromScope, &amp;m_ident);
+        generator.emitTypeProfilerExpressionInfo(m_position, JSTextPosition(-1, m_position.offset + m_ident.length(), -1));
</ins><span class="cx">     }
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="lines">@@ -393,9 +393,9 @@
</span><span class="cx">     generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
</span><span class="cx">     RegisterID* finalDest = generator.finalDestination(dst);
</span><span class="cx">     RegisterID* ret = generator.emitGetByVal(finalDest, base.get(), property);
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(finalDest, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(finalDest, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return ret;
</span><span class="cx"> }
</span><span class="lines">@@ -419,9 +419,9 @@
</span><span class="cx">     generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
</span><span class="cx">     RegisterID* finalDest = generator.finalDestination(dst);
</span><span class="cx">     RegisterID* ret = generator.emitGetById(finalDest, base, m_ident);
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(finalDest, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(finalDest, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return ret;
</span><span class="cx"> }
</span><span class="lines">@@ -503,9 +503,9 @@
</span><span class="cx">     CallArguments callArguments(generator, m_args);
</span><span class="cx">     generator.emitLoad(callArguments.thisRegister(), jsUndefined());
</span><span class="cx">     RegisterID* ret = generator.emitCall(returnValue.get(), func.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd());
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return ret;
</span><span class="cx"> }
</span><span class="lines">@@ -524,9 +524,9 @@
</span><span class="cx">         // This passes NoExpectedFunction because we expect that if the function is in a
</span><span class="cx">         // local variable, then it's not one of our built-in constructors.
</span><span class="cx">         RegisterID* ret = generator.emitCall(returnValue.get(), func.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd());
</span><del>-        if (generator.isProfilingTypesWithHighFidelity()) {
-            generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-            generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+        if (generator.vm()-&gt;typeProfiler()) {
+            generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+            generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">         }
</span><span class="cx">         return ret;
</span><span class="cx">     }
</span><span class="lines">@@ -540,9 +540,9 @@
</span><span class="cx">     generator.emitResolveScope(callArguments.thisRegister(), m_ident);
</span><span class="cx">     generator.emitGetFromScope(func.get(), callArguments.thisRegister(), m_ident, ThrowIfNotFound);
</span><span class="cx">     RegisterID* ret = generator.emitCall(returnValue.get(), func.get(), expectedFunction, callArguments, divot(), divotStart(), divotEnd());
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return ret;
</span><span class="cx"> }
</span><span class="lines">@@ -559,9 +559,9 @@
</span><span class="cx">     CallArguments callArguments(generator, m_args);
</span><span class="cx">     generator.emitMove(callArguments.thisRegister(), base.get());
</span><span class="cx">     RegisterID* ret = generator.emitCall(returnValue.get(), function.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd());
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return ret;
</span><span class="cx"> }
</span><span class="lines">@@ -577,9 +577,9 @@
</span><span class="cx">     generator.emitExpressionInfo(subexpressionDivot(), subexpressionStart(), subexpressionEnd());
</span><span class="cx">     generator.emitGetById(function.get(), callArguments.thisRegister(), m_ident);
</span><span class="cx">     RegisterID* ret = generator.emitCall(returnValue.get(), function.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd());
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return ret;
</span><span class="cx"> }
</span><span class="lines">@@ -651,9 +651,9 @@
</span><span class="cx">         }
</span><span class="cx">         generator.emitLabel(end.get());
</span><span class="cx">     }
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return returnValue.get();
</span><span class="cx"> }
</span><span class="lines">@@ -765,9 +765,9 @@
</span><span class="cx">         generator.emitCall(returnValue.get(), function.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd());
</span><span class="cx">         generator.emitLabel(end.get());
</span><span class="cx">     }
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return returnValue.get();
</span><span class="cx"> }
</span><span class="lines">@@ -802,7 +802,7 @@
</span><span class="cx">         if (local.isReadOnly()) {
</span><span class="cx">             generator.emitReadOnlyExceptionIfNeeded();
</span><span class="cx">             localReg = generator.emitMove(generator.tempDestination(dst), localReg);
</span><del>-        } else if (local.isCaptured() || generator.isProfilingTypesWithHighFidelity()) {
</del><ins>+        } else if (local.isCaptured() || generator.vm()-&gt;typeProfiler()) {
</ins><span class="cx">             RefPtr&lt;RegisterID&gt; tempDst = generator.finalDestination(dst);
</span><span class="cx">             ASSERT(dst != localReg);
</span><span class="cx">             RefPtr&lt;RegisterID&gt; tempDstSrc = generator.newTemporary();
</span><span class="lines">@@ -810,8 +810,8 @@
</span><span class="cx">             generator.emitMove(tempDstSrc.get(), localReg);
</span><span class="cx">             emitIncOrDec(generator, tempDstSrc.get(), m_operator);
</span><span class="cx">             generator.emitMove(localReg, tempDstSrc.get());
</span><del>-            if (generator.isProfilingTypesWithHighFidelity())
-                generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+            if (generator.vm()-&gt;typeProfiler())
+                generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">             return tempDst.get();
</span><span class="cx">         }
</span><span class="cx">         return emitPostIncOrDec(generator, generator.finalDestination(dst), localReg, m_operator);
</span><span class="lines">@@ -822,9 +822,9 @@
</span><span class="cx">     RefPtr&lt;RegisterID&gt; value = generator.emitGetFromScope(generator.newTemporary(), scope.get(), ident, ThrowIfNotFound);
</span><span class="cx">     RefPtr&lt;RegisterID&gt; oldValue = emitPostIncOrDec(generator, generator.finalDestination(dst), value.get(), m_operator);
</span><span class="cx">     generator.emitPutToScope(scope.get(), ident, value.get(), ThrowIfNotFound);
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(value.get(), ProfileTypesBytecodePutToScope, &amp;ident);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(value.get(), ProfileTypeBytecodePutToScope, &amp;ident);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return oldValue.get();
</span><span class="lines">@@ -848,9 +848,9 @@
</span><span class="cx">     RegisterID* oldValue = emitPostIncOrDec(generator, generator.tempDestination(dst), value.get(), m_operator);
</span><span class="cx">     generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
</span><span class="cx">     generator.emitPutByVal(base.get(), property.get(), value.get());
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(value.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(value.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return generator.moveToDestinationIfNeeded(dst, oldValue);
</span><span class="cx"> }
</span><span class="lines">@@ -872,9 +872,9 @@
</span><span class="cx">     RegisterID* oldValue = emitPostIncOrDec(generator, generator.tempDestination(dst), value.get(), m_operator);
</span><span class="cx">     generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
</span><span class="cx">     generator.emitPutById(base.get(), ident, value.get());
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(value.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(value.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return generator.moveToDestinationIfNeeded(dst, oldValue);
</span><span class="cx"> }
</span><span class="lines">@@ -992,13 +992,13 @@
</span><span class="cx">         if (local.isReadOnly()) {
</span><span class="cx">             generator.emitReadOnlyExceptionIfNeeded();
</span><span class="cx">             localReg = generator.emitMove(generator.tempDestination(dst), localReg);
</span><del>-        } else if (local.isCaptured() || generator.isProfilingTypesWithHighFidelity()) {
</del><ins>+        } else if (local.isCaptured() || generator.vm()-&gt;typeProfiler()) {
</ins><span class="cx">             RefPtr&lt;RegisterID&gt; tempDst = generator.tempDestination(dst);
</span><span class="cx">             generator.emitMove(tempDst.get(), localReg);
</span><span class="cx">             emitIncOrDec(generator, tempDst.get(), m_operator);
</span><span class="cx">             generator.emitMove(localReg, tempDst.get());
</span><del>-            if (generator.isProfilingTypesWithHighFidelity())
-                generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+            if (generator.vm()-&gt;typeProfiler())
+                generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">             return generator.moveToDestinationIfNeeded(dst, tempDst.get());
</span><span class="cx">         }
</span><span class="cx">         emitIncOrDec(generator, localReg, m_operator);
</span><span class="lines">@@ -1010,9 +1010,9 @@
</span><span class="cx">     RefPtr&lt;RegisterID&gt; value = generator.emitGetFromScope(generator.newTemporary(), scope.get(), ident, ThrowIfNotFound);
</span><span class="cx">     emitIncOrDec(generator, value.get(), m_operator);
</span><span class="cx">     generator.emitPutToScope(scope.get(), ident, value.get(), ThrowIfNotFound);
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(value.get(), ProfileTypesBytecodePutToScope, &amp;ident);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(value.get(), ProfileTypeBytecodePutToScope, &amp;ident);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return generator.moveToDestinationIfNeeded(dst, value.get());
</span><span class="cx"> }
</span><span class="lines">@@ -1033,9 +1033,9 @@
</span><span class="cx">     emitIncOrDec(generator, value, m_operator);
</span><span class="cx">     generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
</span><span class="cx">     generator.emitPutByVal(base.get(), property.get(), value);
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(value, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(value, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return generator.moveToDestinationIfNeeded(dst, propDst.get());
</span><span class="cx"> }
</span><span class="lines">@@ -1055,9 +1055,9 @@
</span><span class="cx">     emitIncOrDec(generator, value, m_operator);
</span><span class="cx">     generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
</span><span class="cx">     generator.emitPutById(base.get(), ident, value);
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(value, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(value, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return generator.moveToDestinationIfNeeded(dst, propDst.get());
</span><span class="cx"> }
</span><span class="lines">@@ -1506,15 +1506,15 @@
</span><span class="cx">         }
</span><span class="cx">         
</span><span class="cx">         if (local.isCaptured()
</span><del>-            || generator.isProfilingTypesWithHighFidelity()
</del><ins>+            || generator.vm()-&gt;typeProfiler()
</ins><span class="cx">             || generator.leftHandSideNeedsCopy(m_rightHasAssignments, m_right-&gt;isPure(generator))) {
</span><span class="cx">             RefPtr&lt;RegisterID&gt; result = generator.newTemporary();
</span><span class="cx">             generator.emitMove(result.get(), local.get());
</span><span class="cx">             emitReadModifyAssignment(generator, result.get(), result.get(), m_right, m_operator, OperandTypes(ResultType::unknownType(), m_right-&gt;resultDescriptor()));
</span><span class="cx">             generator.emitMove(local.get(), result.get());
</span><span class="cx">             generator.invalidateForInContextForLocal(local.get());
</span><del>-            if (generator.isProfilingTypesWithHighFidelity())
-                generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+            if (generator.vm()-&gt;typeProfiler())
+                generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">             return generator.moveToDestinationIfNeeded(dst, result.get());
</span><span class="cx">         }
</span><span class="cx">         
</span><span class="lines">@@ -1528,9 +1528,9 @@
</span><span class="cx">     RefPtr&lt;RegisterID&gt; value = generator.emitGetFromScope(generator.newTemporary(), scope.get(), m_ident, ThrowIfNotFound);
</span><span class="cx">     RefPtr&lt;RegisterID&gt; result = emitReadModifyAssignment(generator, generator.finalDestination(dst, value.get()), value.get(), m_right, m_operator, OperandTypes(ResultType::unknownType(), m_right-&gt;resultDescriptor()), this);
</span><span class="cx">     RegisterID* returnResult = generator.emitPutToScope(scope.get(), m_ident, result.get(), ThrowIfNotFound);
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(result.get(), ProfileTypesBytecodePutToScope, &amp;m_ident);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(result.get(), ProfileTypeBytecodePutToScope, &amp;m_ident);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return returnResult;
</span><span class="cx"> }
</span><span class="lines">@@ -1544,13 +1544,13 @@
</span><span class="cx">             generator.emitReadOnlyExceptionIfNeeded();
</span><span class="cx">             return generator.emitNode(dst, m_right);
</span><span class="cx">         }
</span><del>-        if (local.isCaptured() || generator.isProfilingTypesWithHighFidelity()) {
</del><ins>+        if (local.isCaptured() || generator.vm()-&gt;typeProfiler()) {
</ins><span class="cx">             RefPtr&lt;RegisterID&gt; tempDst = generator.tempDestination(dst);
</span><span class="cx">             generator.emitNode(tempDst.get(), m_right);
</span><span class="cx">             generator.emitMove(local.get(), tempDst.get());
</span><span class="cx">             generator.invalidateForInContextForLocal(local.get());
</span><del>-            if (generator.isProfilingTypesWithHighFidelity())
-                generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+            if (generator.vm()-&gt;typeProfiler())
+                generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">             return generator.moveToDestinationIfNeeded(dst, tempDst.get());
</span><span class="cx">         }
</span><span class="cx">         RegisterID* result = generator.emitNode(local.get(), m_right);
</span><span class="lines">@@ -1566,9 +1566,9 @@
</span><span class="cx">     RefPtr&lt;RegisterID&gt; result = generator.emitNode(dst, m_right);
</span><span class="cx">     generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
</span><span class="cx">     RegisterID* returnResult = generator.emitPutToScope(scope.get(), m_ident, result.get(), generator.isStrictMode() ? ThrowIfNotFound : DoNotThrowIfNotFound);
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(result.get(), ProfileTypesBytecodePutToScope, &amp;m_ident);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(result.get(), ProfileTypeBytecodePutToScope, &amp;m_ident);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     } 
</span><span class="cx">     return returnResult;
</span><span class="cx"> }
</span><span class="lines">@@ -1583,9 +1583,9 @@
</span><span class="cx">     generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
</span><span class="cx">     RegisterID* forwardResult = (dst == generator.ignoredResult()) ? result : generator.moveToDestinationIfNeeded(generator.tempDestination(result), result);
</span><span class="cx">     generator.emitPutById(base.get(), m_ident, forwardResult);
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(forwardResult, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(forwardResult, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return generator.moveToDestinationIfNeeded(dst, forwardResult);
</span><span class="cx"> }
</span><span class="lines">@@ -1602,9 +1602,9 @@
</span><span class="cx"> 
</span><span class="cx">     generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
</span><span class="cx">     RegisterID* ret = generator.emitPutById(base.get(), m_ident, updatedValue);
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(updatedValue, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(updatedValue, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return ret;
</span><span class="cx"> }
</span><span class="lines">@@ -1628,9 +1628,9 @@
</span><span class="cx">     generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
</span><span class="cx">     RegisterID* forwardResult = (dst == generator.ignoredResult()) ? result : generator.moveToDestinationIfNeeded(generator.tempDestination(result), result);
</span><span class="cx">     generator.emitPutByVal(base.get(), property.get(), forwardResult);
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(forwardResult, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(forwardResult, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     return generator.moveToDestinationIfNeeded(dst, forwardResult);
</span><span class="cx"> }
</span><span class="lines">@@ -1648,9 +1648,9 @@
</span><span class="cx"> 
</span><span class="cx">     generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
</span><span class="cx">     generator.emitPutByVal(base.get(), property.get(), updatedValue);
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(updatedValue, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(updatedValue, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return updatedValue;
</span><span class="lines">@@ -1676,7 +1676,7 @@
</span><span class="cx">             return local.get();
</span><span class="cx"> 
</span><span class="cx">         // FIXME: Maybe call emitExpressionInfo here.
</span><del>-        if (local.isCaptured() || generator.isProfilingTypesWithHighFidelity()) {
</del><ins>+        if (local.isCaptured() || generator.vm()-&gt;typeProfiler()) {
</ins><span class="cx">             RefPtr&lt;RegisterID&gt; tempDst = generator.newTemporary();
</span><span class="cx">             generator.emitNode(tempDst.get(), m_init);
</span><span class="cx">             return generator.emitMove(local.get(), tempDst.get());
</span><span class="lines">@@ -1786,18 +1786,18 @@
</span><span class="cx"> 
</span><span class="cx"> RegisterID* EmptyVarExpression::emitBytecode(BytecodeGenerator&amp; generator, RegisterID*)
</span><span class="cx"> {
</span><del>-    if (!generator.isProfilingTypesWithHighFidelity())
</del><ins>+    if (!generator.vm()-&gt;typeProfiler())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     if (Local local = generator.local(m_ident))
</span><del>-        generator.emitProfileTypesWithHighFidelity(local.get(), ProfileTypesBytecodeHasGlobalID, nullptr);
</del><ins>+        generator.emitProfileType(local.get(), ProfileTypeBytecodeHasGlobalID, nullptr);
</ins><span class="cx">     else {
</span><span class="cx">         RefPtr&lt;RegisterID&gt; scope = generator.emitResolveScope(generator.newTemporary(), m_ident);
</span><span class="cx">         RefPtr&lt;RegisterID&gt; value = generator.emitGetFromScope(generator.newTemporary(), scope.get(), m_ident, DoNotThrowIfNotFound);
</span><del>-        generator.emitProfileTypesWithHighFidelity(value.get(), ProfileTypesBytecodeGetFromScope, &amp;m_ident);
</del><ins>+        generator.emitProfileType(value.get(), ProfileTypeBytecodeGetFromScope, &amp;m_ident);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    generator.emitHighFidelityTypeProfilingExpressionInfo(position(), JSTextPosition(-1, position().offset + m_ident.length(), -1));
</del><ins>+    generator.emitTypeProfilerExpressionInfo(position(), JSTextPosition(-1, position().offset + m_ident.length(), -1));
</ins><span class="cx"> 
</span><span class="cx">     // It's safe to return null here because this node will always be a child node of VarStatementNode which ignores our return value.
</span><span class="cx">     return nullptr;
</span><span class="lines">@@ -2276,9 +2276,9 @@
</span><span class="cx">         dst = 0;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;RegisterID&gt; returnRegister = m_value ? generator.emitNode(dst, m_value) : generator.emitLoad(dst, jsUndefined());
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
-        generator.emitProfileTypesWithHighFidelity(returnRegister.get(), ProfileTypesBytecodeFunctionReturnStatement, nullptr);
-        generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
+        generator.emitProfileType(returnRegister.get(), ProfileTypeBytecodeFunctionReturnStatement, nullptr);
+        generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
</ins><span class="cx">     }
</span><span class="cx">     if (generator.scopeDepth()) {
</span><span class="cx">         returnRegister = generator.emitMove(generator.newTemporary(), returnRegister.get());
</span><span class="lines">@@ -2607,15 +2607,15 @@
</span><span class="cx"> 
</span><span class="cx"> void FunctionBodyNode::emitBytecode(BytecodeGenerator&amp; generator, RegisterID*)
</span><span class="cx"> {
</span><del>-    if (generator.isProfilingTypesWithHighFidelity()) {
</del><ins>+    if (generator.vm()-&gt;typeProfiler()) {
</ins><span class="cx">         for (size_t i = 0; i &lt; m_parameters-&gt;size(); i++) {
</span><span class="cx">             // FIXME: Handle Destructuring assignments into arguments.
</span><span class="cx">             if (!m_parameters-&gt;at(i)-&gt;isBindingNode())
</span><span class="cx">                 continue;
</span><span class="cx">             BindingNode* parameter = static_cast&lt;BindingNode*&gt;(m_parameters-&gt;at(i));
</span><span class="cx">             RegisterID reg(CallFrame::argumentOffset(i));
</span><del>-            generator.emitProfileTypesWithHighFidelity(&amp;reg, ProfileTypesBytecodeFunctionArgument, nullptr);
-            generator.emitHighFidelityTypeProfilingExpressionInfo(parameter-&gt;divotStart(), parameter-&gt;divotEnd());
</del><ins>+            generator.emitProfileType(&amp;reg, ProfileTypeBytecodeFunctionArgument, nullptr);
+            generator.emitTypeProfilerExpressionInfo(parameter-&gt;divotStart(), parameter-&gt;divotEnd());
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -2635,8 +2635,8 @@
</span><span class="cx">     // If there is no return we must automatically insert one.
</span><span class="cx">     if (!returnNode) {
</span><span class="cx">         RegisterID* r0 = generator.isConstructor() ? generator.thisRegister() : generator.emitLoad(0, jsUndefined());
</span><del>-        if (generator.isProfilingTypesWithHighFidelity())
-            generator.emitProfileTypesWithHighFidelity(r0, ProfileTypesBytecodeFunctionReturnStatement, nullptr); // Do not emit expression info for this profile because it's not in the user's source code.
</del><ins>+        if (generator.vm()-&gt;typeProfiler())
+            generator.emitProfileType(r0, ProfileTypeBytecodeFunctionReturnStatement, nullptr); // Do not emit expression info for this profile because it's not in the user's source code.
</ins><span class="cx">         ASSERT(startOffset() &gt;= lineStartOffset());
</span><span class="cx">         generator.emitDebugHook(WillLeaveCallFrame, lastLine(), startOffset(), lineStartOffset());
</span><span class="cx">         generator.emitReturn(r0);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapHeapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/Heap.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/Heap.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/heap/Heap.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -35,7 +35,6 @@
</span><span class="cx"> #include &quot;HeapIterationScope.h&quot;
</span><span class="cx"> #include &quot;HeapRootVisitor.h&quot;
</span><span class="cx"> #include &quot;HeapStatistics.h&quot;
</span><del>-#include &quot;HighFidelityLog.h&quot;
</del><span class="cx"> #include &quot;IncrementalSweeper.h&quot;
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><span class="lines">@@ -45,6 +44,7 @@
</span><span class="cx"> #include &quot;JSVirtualMachineInternal.h&quot;
</span><span class="cx"> #include &quot;RecursiveAllocationScope.h&quot;
</span><span class="cx"> #include &quot;Tracing.h&quot;
</span><ins>+#include &quot;TypeProfilerLog.h&quot;
</ins><span class="cx"> #include &quot;UnlinkedCodeBlock.h&quot;
</span><span class="cx"> #include &quot;VM.h&quot;
</span><span class="cx"> #include &quot;WeakSetInlines.h&quot;
</span><span class="lines">@@ -979,9 +979,9 @@
</span><span class="cx">     
</span><span class="cx">     SamplingRegion samplingRegion(&quot;Garbage Collection&quot;);
</span><span class="cx">     
</span><del>-    if (vm()-&gt;isProfilingTypesWithHighFidelity()) {
</del><ins>+    if (vm()-&gt;typeProfiler()) {
</ins><span class="cx">         DeferGCForAWhile awhile(*this);
</span><del>-        vm()-&gt;highFidelityLog()-&gt;processHighFidelityLog(&quot;GC&quot;);
</del><ins>+        vm()-&gt;typeProfilerLog()-&gt;processLogEntries(ASCIILiteral(&quot;GC&quot;));
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     RELEASE_ASSERT(!m_deferralDepth);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorRuntimeAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -36,8 +36,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Completion.h&quot;
</span><span class="cx"> #include &quot;HeapIterationScope.h&quot;
</span><del>-#include &quot;HighFidelityLog.h&quot;
-#include &quot;HighFidelityTypeProfiler.h&quot;
</del><span class="cx"> #include &quot;InjectedScript.h&quot;
</span><span class="cx"> #include &quot;InjectedScriptManager.h&quot;
</span><span class="cx"> #include &quot;InspectorValues.h&quot;
</span><span class="lines">@@ -45,6 +43,8 @@
</span><span class="cx"> #include &quot;ParserError.h&quot;
</span><span class="cx"> #include &quot;ScriptDebugServer.h&quot;
</span><span class="cx"> #include &quot;SourceCode.h&quot;
</span><ins>+#include &quot;TypeProfiler.h&quot;
+#include &quot;TypeProfilerLog.h&quot;
</ins><span class="cx"> #include &quot;VMEntryScope.h&quot;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><span class="lines">@@ -202,13 +202,13 @@
</span><span class="cx">     static const bool verbose = false;
</span><span class="cx">     VM&amp; vm = globalVM();
</span><span class="cx">     typeDescriptions = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Runtime::TypeDescription&gt;::create();
</span><del>-    if (!vm.isProfilingTypesWithHighFidelity()) {
</del><ins>+    if (!vm.typeProfiler()) {
</ins><span class="cx">         *errorString = ASCIILiteral(&quot;The VM does not currently have Type Information.&quot;);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     double start = currentTimeMS();
</span><del>-    vm.highFidelityLog()-&gt;processHighFidelityLog(&quot;User Query&quot;);
</del><ins>+    vm.typeProfilerLog()-&gt;processLogEntries(ASCIILiteral(&quot;User Query&quot;));
</ins><span class="cx"> 
</span><span class="cx">     for (size_t i = 0; i &lt; locations-&gt;length(); i++) {
</span><span class="cx">         RefPtr&lt;Inspector::InspectorValue&gt; value = locations-&gt;get(i);
</span><span class="lines">@@ -227,7 +227,7 @@
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;Inspector::TypeBuilder::Runtime::TypeDescription&gt; typeDescription = Inspector::TypeBuilder::Runtime::TypeDescription::create();
</span><span class="cx">         bool okay;
</span><del>-        vm.highFidelityTypeProfiler()-&gt;getTypesForVariableAtOffsetForInspector(static_cast&lt;TypeProfilerSearchDescriptor&gt;(descriptor), divot, sourceIDAsString.toIntPtrStrict(&amp;okay), typeDescription);
</del><ins>+        vm.typeProfiler()-&gt;getTypesForVariableAtOffsetForInspector(static_cast&lt;TypeProfilerSearchDescriptor&gt;(descriptor), divot, sourceIDAsString.toIntPtrStrict(&amp;okay), typeDescription);
</ins><span class="cx">         typeDescriptions-&gt;addItem(typeDescription);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -253,7 +253,7 @@
</span><span class="cx"> {
</span><span class="cx">     vm.waitForCompilationsToComplete();
</span><span class="cx"> 
</span><del>-    bool needsToRecompile = (shouldEnableTypeProfiling ? vm.enableHighFidelityTypeProfiling() : vm.disableHighFidelityTypeProfiling());
</del><ins>+    bool needsToRecompile = (shouldEnableTypeProfiling ? vm.enableTypeProfiler() : vm.disableTypeProfiler());
</ins><span class="cx">     if (needsToRecompile) {
</span><span class="cx">         TypeRecompiler recompiler;
</span><span class="cx">         HeapIterationScope iterationScope(vm.heap);
</span><span class="lines">@@ -264,20 +264,20 @@
</span><span class="cx"> void InspectorRuntimeAgent::willDestroyFrontendAndBackend(InspectorDisconnectReason reason)
</span><span class="cx"> {
</span><span class="cx">     if (reason != InspectorDisconnectReason::InspectedTargetDestroyed &amp;&amp; m_isTypeProfilingEnabled)
</span><del>-        setHighFidelityTypeProfilingEnabledState(false);
</del><ins>+        setTypeProfilerEnabledState(false);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorRuntimeAgent::enableHighFidelityTypeProfiling(ErrorString*)
</del><ins>+void InspectorRuntimeAgent::enableTypeProfiler(ErrorString*)
</ins><span class="cx"> {
</span><del>-    setHighFidelityTypeProfilingEnabledState(true);
</del><ins>+    setTypeProfilerEnabledState(true);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorRuntimeAgent::disableHighFidelityTypeProfiling(ErrorString*)
</del><ins>+void InspectorRuntimeAgent::disableTypeProfiler(ErrorString*)
</ins><span class="cx"> {
</span><del>-    setHighFidelityTypeProfilingEnabledState(false);
</del><ins>+    setTypeProfilerEnabledState(false);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorRuntimeAgent::setHighFidelityTypeProfilingEnabledState(bool shouldEnableTypeProfiling)
</del><ins>+void InspectorRuntimeAgent::setTypeProfilerEnabledState(bool shouldEnableTypeProfiling)
</ins><span class="cx"> {
</span><span class="cx">     if (m_isTypeProfilingEnabled == shouldEnableTypeProfiling)
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorRuntimeAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -69,8 +69,8 @@
</span><span class="cx">     virtual void releaseObjectGroup(ErrorString*, const String&amp; objectGroup) override final;
</span><span class="cx">     virtual void run(ErrorString*) override;
</span><span class="cx">     virtual void getRuntimeTypesForVariablesAtOffsets(ErrorString*, const RefPtr&lt;Inspector::InspectorArray&gt;&amp; locations, RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Runtime::TypeDescription&gt;&gt;&amp;) override;
</span><del>-    virtual void enableHighFidelityTypeProfiling(ErrorString*) override;
-    virtual void disableHighFidelityTypeProfiling(ErrorString*) override;
</del><ins>+    virtual void enableTypeProfiler(ErrorString*) override;
+    virtual void disableTypeProfiler(ErrorString*) override;
</ins><span class="cx">     
</span><span class="cx">     void setScriptDebugServer(ScriptDebugServer* scriptDebugServer) { m_scriptDebugServer = scriptDebugServer; }
</span><span class="cx"> 
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx">     virtual void unmuteConsole() = 0;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void setHighFidelityTypeProfilingEnabledState(bool);
</del><ins>+    void setTypeProfilerEnabledState(bool);
</ins><span class="cx"> 
</span><span class="cx">     InjectedScriptManager* m_injectedScriptManager;
</span><span class="cx">     ScriptDebugServer* m_scriptDebugServer;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorprotocolRuntimejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/protocol/Runtime.json (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/protocol/Runtime.json        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/inspector/protocol/Runtime.json        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -241,12 +241,12 @@
</span><span class="cx">             &quot;description&quot;: &quot;Returns detailed informtation on given function.&quot;
</span><span class="cx">         },
</span><span class="cx">         {
</span><del>-            &quot;name&quot;: &quot;enableHighFidelityTypeProfiling&quot;,
-            &quot;description&quot;: &quot;Enables high fidelity type profiling on the VM.&quot;
</del><ins>+            &quot;name&quot;: &quot;enableTypeProfiler&quot;,
+            &quot;description&quot;: &quot;Enables type profiling on the VM.&quot;
</ins><span class="cx">         },
</span><span class="cx">         {
</span><del>-            &quot;name&quot;: &quot;disableHighFidelityTypeProfiling&quot;,
-            &quot;description&quot;: &quot;Disables high fidelity type profiling on the VM.&quot;
</del><ins>+            &quot;name&quot;: &quot;disableTypeProfiler&quot;,
+            &quot;description&quot;: &quot;Disables type profiling on the VM.&quot;
</ins><span class="cx">         }
</span><span class="cx">     ],
</span><span class="cx">     &quot;events&quot;: [
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JIT.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JIT.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/jit/JIT.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -38,7 +38,6 @@
</span><span class="cx"> #include &quot;ArityCheckFailReturnThunks.h&quot;
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><span class="cx"> #include &quot;DFGCapabilities.h&quot;
</span><del>-#include &quot;HighFidelityLog.h&quot;
</del><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JITInlines.h&quot;
</span><span class="cx"> #include &quot;JITOperations.h&quot;
</span><span class="lines">@@ -53,6 +52,7 @@
</span><span class="cx"> #include &quot;SamplingTool.h&quot;
</span><span class="cx"> #include &quot;SlowPathCall.h&quot;
</span><span class="cx"> #include &quot;StackAlignment.h&quot;
</span><ins>+#include &quot;TypeProfilerLog.h&quot;
</ins><span class="cx"> #include &lt;wtf/CryptographicallyRandomNumber.h&gt;
</span><span class="cx"> 
</span><span class="cx"> using namespace std;
</span><span class="lines">@@ -268,7 +268,7 @@
</span><span class="cx">         DEFINE_OP(op_inc)
</span><span class="cx">         DEFINE_OP(op_profile_did_call)
</span><span class="cx">         DEFINE_OP(op_profile_will_call)
</span><del>-        DEFINE_OP(op_profile_types_with_high_fidelity)
</del><ins>+        DEFINE_OP(op_profile_type)
</ins><span class="cx">         DEFINE_OP(op_push_name_scope)
</span><span class="cx">         DEFINE_OP(op_push_with_scope)
</span><span class="cx">         case op_put_by_id_out_of_line:
</span><span class="lines">@@ -501,9 +501,9 @@
</span><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    // This ensures that we have the most up to date type information when performing typecheck optimizations for op_profile_types_with_high_fidelity.
-    if (m_vm-&gt;isProfilingTypesWithHighFidelity())
-        m_vm-&gt;highFidelityLog()-&gt;processHighFidelityLog(ASCIILiteral(&quot;Preparing for JIT compilation.&quot;));
</del><ins>+    // This ensures that we have the most up to date type information when performing typecheck optimizations for op_profile_type.
+    if (m_vm-&gt;typeProfiler())
+        m_vm-&gt;typeProfilerLog()-&gt;processLogEntries(ASCIILiteral(&quot;Preparing for JIT compilation.&quot;));
</ins><span class="cx">     
</span><span class="cx">     if (Options::showDisassembly() || m_vm-&gt;m_perBytecodeProfiler)
</span><span class="cx">         m_disassembler = adoptPtr(new JITDisassembler(m_codeBlock));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JIT.h (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JIT.h        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/jit/JIT.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -527,7 +527,7 @@
</span><span class="cx">         void emit_op_inc(Instruction*);
</span><span class="cx">         void emit_op_profile_did_call(Instruction*);
</span><span class="cx">         void emit_op_profile_will_call(Instruction*);
</span><del>-        void emit_op_profile_types_with_high_fidelity(Instruction*);
</del><ins>+        void emit_op_profile_type(Instruction*);
</ins><span class="cx">         void emit_op_push_name_scope(Instruction*);
</span><span class="cx">         void emit_op_push_with_scope(Instruction*);
</span><span class="cx">         void emit_op_put_by_id(Instruction*);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOpcodescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -32,7 +32,6 @@
</span><span class="cx"> #include &quot;CopiedSpaceInlines.h&quot;
</span><span class="cx"> #include &quot;Debugger.h&quot;
</span><span class="cx"> #include &quot;Heap.h&quot;
</span><del>-#include &quot;HighFidelityLog.h&quot;
</del><span class="cx"> #include &quot;JITInlines.h&quot;
</span><span class="cx"> #include &quot;JSArray.h&quot;
</span><span class="cx"> #include &quot;JSCell.h&quot;
</span><span class="lines">@@ -43,6 +42,7 @@
</span><span class="cx"> #include &quot;RepatchBuffer.h&quot;
</span><span class="cx"> #include &quot;SlowPathCall.h&quot;
</span><span class="cx"> #include &quot;TypeLocation.h&quot;
</span><ins>+#include &quot;TypeProfilerLog.h&quot;
</ins><span class="cx"> #include &quot;VirtualRegister.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="lines">@@ -1339,7 +1339,7 @@
</span><span class="cx">     slowPathCall.call();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_profile_types_with_high_fidelity(Instruction* currentInstruction)
</del><ins>+void JIT::emit_op_profile_type(Instruction* currentInstruction)
</ins><span class="cx"> {
</span><span class="cx">     TypeLocation* cachedTypeLocation = currentInstruction[2].u.location;
</span><span class="cx">     int valueToProfile = currentInstruction[1].u.operand;
</span><span class="lines">@@ -1369,31 +1369,31 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Load the type profiling log into T2.
</span><del>-    HighFidelityLog* cachedHighFidelityLog = m_vm-&gt;highFidelityLog();
-    move(TrustedImmPtr(cachedHighFidelityLog), regT2);
</del><ins>+    TypeProfilerLog* cachedTypeProfilerLog = m_vm-&gt;typeProfilerLog();
+    move(TrustedImmPtr(cachedTypeProfilerLog), regT2);
</ins><span class="cx">     // Load the next log entry into T1.
</span><del>-    loadPtr(Address(regT2, HighFidelityLog::currentLogEntryOffset()), regT1);
</del><ins>+    loadPtr(Address(regT2, TypeProfilerLog::currentLogEntryOffset()), regT1);
</ins><span class="cx"> 
</span><span class="cx">     // Store the JSValue onto the log entry.
</span><del>-    store64(regT0, Address(regT1, HighFidelityLog::LogEntry::valueOffset()));
</del><ins>+    store64(regT0, Address(regT1, TypeProfilerLog::LogEntry::valueOffset()));
</ins><span class="cx"> 
</span><span class="cx">     // Store the structureID of the cell if T0 is a cell, otherwise, store 0 on the log entry.
</span><span class="cx">     Jump notCell = emitJumpIfNotJSCell(regT0);
</span><span class="cx">     load32(Address(regT0, JSCell::structureIDOffset()), regT0);
</span><del>-    store32(regT0, Address(regT1, HighFidelityLog::LogEntry::structureIDOffset()));
</del><ins>+    store32(regT0, Address(regT1, TypeProfilerLog::LogEntry::structureIDOffset()));
</ins><span class="cx">     Jump skipIsCell = jump();
</span><span class="cx">     notCell.link(this);
</span><del>-    store32(TrustedImm32(0), Address(regT1, HighFidelityLog::LogEntry::structureIDOffset()));
</del><ins>+    store32(TrustedImm32(0), Address(regT1, TypeProfilerLog::LogEntry::structureIDOffset()));
</ins><span class="cx">     skipIsCell.link(this);
</span><span class="cx"> 
</span><span class="cx">     // Store the typeLocation on the log entry.
</span><span class="cx">     move(TrustedImmPtr(cachedTypeLocation), regT0);
</span><del>-    store64(regT0, Address(regT1, HighFidelityLog::LogEntry::locationOffset()));
</del><ins>+    store64(regT0, Address(regT1, TypeProfilerLog::LogEntry::locationOffset()));
</ins><span class="cx"> 
</span><span class="cx">     // Increment the current log entry.
</span><del>-    addPtr(TrustedImm32(sizeof(HighFidelityLog::LogEntry)), regT1);
-    store64(regT1, Address(regT2, HighFidelityLog::currentLogEntryOffset()));
-    Jump skipClearLog = branchPtr(NotEqual, regT1, TrustedImmPtr(cachedHighFidelityLog-&gt;logEndPtr()));
</del><ins>+    addPtr(TrustedImm32(sizeof(TypeProfilerLog::LogEntry)), regT1);
+    store64(regT1, Address(regT2, TypeProfilerLog::currentLogEntryOffset()));
+    Jump skipClearLog = branchPtr(NotEqual, regT1, TrustedImmPtr(cachedTypeProfilerLog-&gt;logEndPtr()));
</ins><span class="cx">     // Clear the log if we're at the end of the log.
</span><span class="cx">     callOperation(operationProcessTypeProfilerLog);
</span><span class="cx">     skipClearLog.link(this);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOpcodes32_64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -1306,9 +1306,9 @@
</span><span class="cx">     slowPathCall.call();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_profile_types_with_high_fidelity(Instruction* currentInstruction)
</del><ins>+void JIT::emit_op_profile_type(Instruction* currentInstruction)
</ins><span class="cx"> {
</span><del>-    JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_profile_types_with_high_fidelity);
</del><ins>+    JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_profile_type);
</ins><span class="cx">     slowPathCall.call();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOperations.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -40,7 +40,6 @@
</span><span class="cx"> #include &quot;ErrorHandlingScope.h&quot;
</span><span class="cx"> #include &quot;ExceptionFuzz.h&quot;
</span><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><del>-#include &quot;HighFidelityLog.h&quot;
</del><span class="cx"> #include &quot;HostCallReturnValue.h&quot;
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JITToDFGDeferredCompilationCallback.h&quot;
</span><span class="lines">@@ -54,6 +53,7 @@
</span><span class="cx"> #include &quot;Repatch.h&quot;
</span><span class="cx"> #include &quot;RepatchBuffer.h&quot;
</span><span class="cx"> #include &quot;TestRunnerUtils.h&quot;
</span><ins>+#include &quot;TypeProfilerLog.h&quot;
</ins><span class="cx"> #include &lt;wtf/InlineASM.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="lines">@@ -1929,7 +1929,7 @@
</span><span class="cx"> 
</span><span class="cx"> void JIT_OPERATION operationProcessTypeProfilerLog(ExecState* exec)
</span><span class="cx"> {
</span><del>-    exec-&gt;vm().highFidelityLog()-&gt;processHighFidelityLog(ASCIILiteral(&quot;Log Full, called from inside baseline JIT&quot;));
</del><ins>+    exec-&gt;vm().typeProfilerLog()-&gt;processLogEntries(ASCIILiteral(&quot;Log Full, called from inside baseline JIT&quot;));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // extern &quot;C&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejsccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jsc.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jsc.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/jsc.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -1061,7 +1061,7 @@
</span><span class="cx"> 
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL functionDumpTypesForAllVariables(ExecState* exec)
</span><span class="cx"> {
</span><del>-    exec-&gt;vm().dumpHighFidelityProfilingTypes();
</del><ins>+    exec-&gt;vm().dumpTypeProfilerData();
</ins><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> #include &quot;ExceptionFuzz.h&quot;
</span><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><span class="cx"> #include &quot;HostCallReturnValue.h&quot;
</span><del>-#include &quot;HighFidelityLog.h&quot;
</del><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JITExceptions.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLowLevelInterpreterasm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -1352,6 +1352,6 @@
</span><span class="cx"> _llint_op_init_global_const_nop:
</span><span class="cx">     dispatch(5)
</span><span class="cx"> 
</span><del>-_llint_op_profile_types_with_high_fidelity:
-    callSlowPath(_slow_path_profile_types_with_high_fidelity)
</del><ins>+_llint_op_profile_type:
+    callSlowPath(_slow_path_profile_type)
</ins><span class="cx">     dispatch(6)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCodeCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CodeCache.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CodeCache.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/CodeCache.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> {
</span><span class="cx">     SourceCodeKey key = SourceCodeKey(source, String(), CacheTypes&lt;UnlinkedCodeBlockType&gt;::codeType, strictness);
</span><span class="cx">     CodeCacheMap::AddResult addResult = m_sourceCode.add(key, SourceCodeValue());
</span><del>-    bool canCache = debuggerMode == DebuggerOff &amp;&amp; profilerMode == ProfilerOff &amp;&amp; !vm.isProfilingTypesWithHighFidelity();
</del><ins>+    bool canCache = debuggerMode == DebuggerOff &amp;&amp; profilerMode == ProfilerOff &amp;&amp; !vm.typeProfiler();
</ins><span class="cx">     if (!addResult.isNewEntry &amp;&amp; canCache) {
</span><span class="cx">         UnlinkedCodeBlockType* unlinkedCodeBlock = jsCast&lt;UnlinkedCodeBlockType*&gt;(addResult.iterator-&gt;value.cell.get());
</span><span class="cx">         unsigned firstLine = source.firstLine() + unlinkedCodeBlock-&gt;firstLine();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCommonSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> #include &quot;ErrorHandlingScope.h&quot;
</span><span class="cx"> #include &quot;ExceptionFuzz.h&quot;
</span><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><del>-#include &quot;HighFidelityLog.h&quot;
</del><span class="cx"> #include &quot;HostCallReturnValue.h&quot;
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="lines">@@ -52,6 +51,7 @@
</span><span class="cx"> #include &quot;ObjectConstructor.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;StructureRareDataInlines.h&quot;
</span><ins>+#include &quot;TypeProfilerLog.h&quot;
</ins><span class="cx"> #include &quot;VariableWatchpointSetInlines.h&quot;
</span><span class="cx"> #include &lt;wtf/StringPrintStream.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -637,12 +637,12 @@
</span><span class="cx">     RETURN(jsString(exec, Identifier::from(exec, OP(2).jsValue().asUInt32()).string()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-SLOW_PATH_DECL(slow_path_profile_types_with_high_fidelity)
</del><ins>+SLOW_PATH_DECL(slow_path_profile_type)
</ins><span class="cx"> {
</span><span class="cx">     BEGIN();
</span><span class="cx">     TypeLocation* location = pc[2].u.location;
</span><span class="cx">     JSValue val = OP_C(1).jsValue();
</span><del>-    vm.highFidelityLog()-&gt;recordTypeInformationForLocation(val, location);
</del><ins>+    vm.typeProfilerLog()-&gt;recordTypeInformationForLocation(val, location);
</ins><span class="cx">     END();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCommonSlowPathsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -233,7 +233,7 @@
</span><span class="cx"> SLOW_PATH_HIDDEN_DECL(slow_path_get_generic_property_enumerator);
</span><span class="cx"> SLOW_PATH_HIDDEN_DECL(slow_path_next_enumerator_pname);
</span><span class="cx"> SLOW_PATH_HIDDEN_DECL(slow_path_to_index_string);
</span><del>-SLOW_PATH_HIDDEN_DECL(slow_path_profile_types_with_high_fidelity);
</del><ins>+SLOW_PATH_HIDDEN_DECL(slow_path_profile_type);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Executable.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Executable.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/Executable.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -30,12 +30,12 @@
</span><span class="cx"> #include &quot;BytecodeGenerator.h&quot;
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><span class="cx"> #include &quot;DFGDriver.h&quot;
</span><del>-#include &quot;HighFidelityTypeProfiler.h&quot;
</del><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;LLIntEntrypoint.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;Parser.h&quot;
</span><span class="cx"> #include &quot;ProfilerDatabase.h&quot;
</span><ins>+#include &quot;TypeProfiler.h&quot;
</ins><span class="cx"> #include &lt;wtf/CommaPrinter.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringBuilder.h&gt;
</span><span class="lines">@@ -104,8 +104,8 @@
</span><span class="cx">     , m_lastLine(-1)
</span><span class="cx">     , m_startColumn(UINT_MAX)
</span><span class="cx">     , m_endColumn(UINT_MAX)
</span><del>-    , m_highFidelityTypeProfilingStartOffset(UINT_MAX)
-    , m_highFidelityTypeProfilingEndOffset(UINT_MAX)
</del><ins>+    , m_typeProfilingStartOffset(UINT_MAX)
+    , m_typeProfilingEndOffset(UINT_MAX)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -376,10 +376,10 @@
</span><span class="cx"> ProgramExecutable::ProgramExecutable(ExecState* exec, const SourceCode&amp; source)
</span><span class="cx">     : ScriptExecutable(exec-&gt;vm().programExecutableStructure.get(), exec-&gt;vm(), source, false)
</span><span class="cx"> {
</span><del>-    m_highFidelityTypeProfilingStartOffset = 0;
-    m_highFidelityTypeProfilingEndOffset = source.length() - 1;
-    if (exec-&gt;vm().isProfilingTypesWithHighFidelity())
-        exec-&gt;vm().highFidelityTypeProfiler()-&gt;functionHasExecutedCache()-&gt;insertUnexecutedRange(sourceID(), m_highFidelityTypeProfilingStartOffset, m_highFidelityTypeProfilingEndOffset);
</del><ins>+    m_typeProfilingStartOffset = 0;
+    m_typeProfilingEndOffset = source.length() - 1;
+    if (exec-&gt;vm().typeProfiler())
+        exec-&gt;vm().typeProfiler()-&gt;functionHasExecutedCache()-&gt;insertUnexecutedRange(sourceID(), m_typeProfilingStartOffset, m_typeProfilingEndOffset);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ProgramExecutable::destroy(JSCell* cell)
</span><span class="lines">@@ -403,8 +403,8 @@
</span><span class="cx">     ASSERT(endColumn != UINT_MAX);
</span><span class="cx">     m_startColumn = startColumn;
</span><span class="cx">     m_endColumn = endColumn;
</span><del>-    m_highFidelityTypeProfilingStartOffset = unlinkedExecutable-&gt;highFidelityTypeProfilingStartOffset();
-    m_highFidelityTypeProfilingEndOffset = unlinkedExecutable-&gt;highFidelityTypeProfilingEndOffset();
</del><ins>+    m_typeProfilingStartOffset = unlinkedExecutable-&gt;typeProfilingStartOffset();
+    m_typeProfilingEndOffset = unlinkedExecutable-&gt;typeProfilingEndOffset();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FunctionExecutable::destroy(JSCell* cell)
</span><span class="lines">@@ -501,10 +501,10 @@
</span><span class="cx">         UnlinkedFunctionExecutable* unlinkedFunctionExecutable = functionDeclarations[i].second.get();
</span><span class="cx">         JSValue value = JSFunction::create(vm, unlinkedFunctionExecutable-&gt;link(vm, m_source, lineNo()), scope);
</span><span class="cx">         globalObject-&gt;addFunction(callFrame, functionDeclarations[i].first, value);
</span><del>-        if (vm.isProfilingTypesWithHighFidelity()) {
-            vm.highFidelityTypeProfiler()-&gt;functionHasExecutedCache()-&gt;insertUnexecutedRange(sourceID(), 
-                unlinkedFunctionExecutable-&gt;highFidelityTypeProfilingStartOffset(), 
-                unlinkedFunctionExecutable-&gt;highFidelityTypeProfilingEndOffset());
</del><ins>+        if (vm.typeProfiler()) {
+            vm.typeProfiler()-&gt;functionHasExecutedCache()-&gt;insertUnexecutedRange(sourceID(), 
+                unlinkedFunctionExecutable-&gt;typeProfilingStartOffset(), 
+                unlinkedFunctionExecutable-&gt;typeProfilingEndOffset());
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExecutableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Executable.h (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Executable.h        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/Executable.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -365,8 +365,8 @@
</span><span class="cx">     int lastLine() const { return m_lastLine; }
</span><span class="cx">     unsigned startColumn() const { return m_startColumn; }
</span><span class="cx">     unsigned endColumn() const { return m_endColumn; }
</span><del>-    unsigned highFidelityTypeProfilingStartOffset() const { return m_highFidelityTypeProfilingStartOffset; }
-    unsigned highFidelityTypeProfilingEndOffset() const { return m_highFidelityTypeProfilingEndOffset; }
</del><ins>+    unsigned typeProfilingStartOffset() const { return m_typeProfilingStartOffset; }
+    unsigned typeProfilingEndOffset() const { return m_typeProfilingEndOffset; }
</ins><span class="cx"> 
</span><span class="cx">     bool usesEval() const { return m_features &amp; EvalFeature; }
</span><span class="cx">     bool usesArguments() const { return m_features &amp; ArgumentsFeature; }
</span><span class="lines">@@ -437,8 +437,8 @@
</span><span class="cx">     int m_lastLine;
</span><span class="cx">     unsigned m_startColumn;
</span><span class="cx">     unsigned m_endColumn;
</span><del>-    unsigned m_highFidelityTypeProfilingStartOffset;
-    unsigned m_highFidelityTypeProfilingEndOffset;
</del><ins>+    unsigned m_typeProfilingStartOffset;
+    unsigned m_typeProfilingEndOffset;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class EvalExecutable : public ScriptExecutable {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeHighFidelityLogcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/HighFidelityLog.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/HighFidelityLog.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/HighFidelityLog.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -1,94 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 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;HighFidelityLog.h&quot;
-
-#include &quot;JSCJSValueInlines.h&quot;
-#include &quot;TypeLocation.h&quot;
-#include &lt;wtf/CurrentTime.h&gt;
-
-
-namespace JSC {
-
-static const bool verbose = false;
-
-void HighFidelityLog::initializeHighFidelityLog()
-{
-    ASSERT(!m_logStartPtr);
-    m_highFidelityLogSize = 50000;
-    m_logStartPtr = new LogEntry[m_highFidelityLogSize];
-    m_currentLogEntryPtr = m_logStartPtr;
-    m_logEndPtr = m_logStartPtr + m_highFidelityLogSize;
-}
-
-HighFidelityLog::~HighFidelityLog()
-{
-    delete[] m_logStartPtr;
-}
-
-void HighFidelityLog::processHighFidelityLog(String reason)
-{
-    if (verbose)
-        dataLog(&quot;Process caller:'&quot;, reason,&quot;'&quot;);
-
-    double before = currentTimeMS();
-    LogEntry* entry = m_logStartPtr;
-    HashMap&lt;StructureID, RefPtr&lt;StructureShape&gt;&gt; seenShapes;
-    while (entry != m_currentLogEntryPtr) {
-        StructureID id = entry-&gt;structureID;
-        RefPtr&lt;StructureShape&gt; shape; 
-        JSValue value = entry-&gt;value;
-        if (id) {
-            auto iter = seenShapes.find(id);
-            if (iter == seenShapes.end()) {
-                shape = Heap::heap(value.asCell())-&gt;structureIDTable().get(entry-&gt;structureID)-&gt;toStructureShape(value);
-                seenShapes.set(id, shape);
-            } else
-                shape = iter-&gt;value;
-        }
-
-        RuntimeType type = TypeSet::getRuntimeTypeForValue(value);
-        TypeLocation* location = entry-&gt;location;
-        location-&gt;m_lastSeenType = type;
-        if (location-&gt;m_globalTypeSet)
-            location-&gt;m_globalTypeSet-&gt;addTypeInformation(type, shape, id);
-        location-&gt;m_instructionTypeSet-&gt;addTypeInformation(type, shape, id);
-
-        entry++;
-    }
-
-    m_currentLogEntryPtr = m_logStartPtr;
-
-    if (verbose) {
-        double after = currentTimeMS();
-        dataLogF(&quot; Processing the log took: '%f' ms\n&quot;, after - before);
-    }
-}
-
-} //namespace JSC
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeHighFidelityLogh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/HighFidelityLog.h (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/HighFidelityLog.h        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/HighFidelityLog.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -1,94 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 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 HighFidelityLog_h
-#define HighFidelityLog_h
-
-#include &quot;JSCJSValue.h&quot;
-#include &quot;HighFidelityTypeProfiler.h&quot;
-#include &quot;Structure.h&quot;
-#include &lt;wtf/ByteSpinLock.h&gt;
-
-namespace JSC {
-
-class TypeLocation;
-
-class HighFidelityLog {
-
-public:
-    struct LogEntry {
-        public:
-        JSValue value;
-        TypeLocation* location; 
-        StructureID structureID;
-
-        static ptrdiff_t structureIDOffset() { return OBJECT_OFFSETOF(LogEntry, structureID); }
-        static ptrdiff_t valueOffset() { return OBJECT_OFFSETOF(LogEntry, value); }
-        static ptrdiff_t locationOffset() { return OBJECT_OFFSETOF(LogEntry, location); }
-    };
-
-
-    HighFidelityLog()
-        : m_logStartPtr(0)
-    {
-        initializeHighFidelityLog();
-    }
-
-    ~HighFidelityLog();
-
-    ALWAYS_INLINE void recordTypeInformationForLocation(JSValue value, TypeLocation* location)
-    {
-        ASSERT(m_logStartPtr);
-
-        m_currentLogEntryPtr-&gt;location = location;
-        m_currentLogEntryPtr-&gt;value = value;
-        m_currentLogEntryPtr-&gt;structureID = (value.isCell() ? value.asCell()-&gt;structureID() : 0);
-    
-        m_currentLogEntryPtr += 1;
-        if (UNLIKELY(m_currentLogEntryPtr == m_logEndPtr))
-            processHighFidelityLog(&quot;Log Full&quot;);
-    }
-
-    void processHighFidelityLog(String);
-    LogEntry* logEndPtr() const { return m_logEndPtr; }
-
-    static ptrdiff_t logStartOffset() { return OBJECT_OFFSETOF(HighFidelityLog, m_logStartPtr); }
-    static ptrdiff_t currentLogEntryOffset() { return OBJECT_OFFSETOF(HighFidelityLog, m_currentLogEntryPtr); }
-
-private:
-    void initializeHighFidelityLog();
-
-    unsigned m_highFidelityLogSize;
-    LogEntry* m_logStartPtr;
-    LogEntry* m_currentLogEntryPtr;
-    LogEntry* m_logEndPtr;
-};
-
-} //namespace JSC
-
-#endif //HighFidelityLog_h
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeHighFidelityTypeProfilercpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -1,129 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;HighFidelityTypeProfiler.h&quot;
-
-#include &quot;InspectorJSTypeBuilders.h&quot;
-#include &quot;TypeLocation.h&quot;
-
-namespace JSC {
-
-static const bool verbose = false;
-
-void HighFidelityTypeProfiler::logTypesForTypeLocation(TypeLocation* location)
-{
-    TypeProfilerSearchDescriptor descriptor = location-&gt;m_globalVariableID == HighFidelityReturnStatement ? TypeProfilerSearchDescriptorFunctionReturn : TypeProfilerSearchDescriptorNormal;
-
-    dataLogF(&quot;[Start, End]::[%u, %u]\n&quot;, location-&gt;m_divotStart, location-&gt;m_divotEnd);
-
-    if (findLocation(location-&gt;m_divotStart, location-&gt;m_sourceID, descriptor))
-        dataLog(&quot;\t\t[Entry IS in System]\n&quot;);
-    else
-        dataLog(&quot;\t\t[Entry IS NOT in system]\n&quot;);
-
-    dataLog(&quot;\t\t&quot;, location-&gt;m_globalVariableID == HighFidelityReturnStatement ? &quot;[Return Statement]&quot; : &quot;[Normal Statement]&quot;, &quot;\n&quot;);
-
-    dataLog(&quot;\t\t#Local#\n\t\t&quot;, location-&gt;m_instructionTypeSet-&gt;seenTypes().replace(&quot;\n&quot;, &quot;\n\t\t&quot;), &quot;\n&quot;);
-    if (location-&gt;m_globalTypeSet)
-        dataLog(&quot;\t\t#Global#\n\t\t&quot;, location-&gt;m_globalTypeSet-&gt;seenTypes().replace(&quot;\n&quot;, &quot;\n\t\t&quot;), &quot;\n&quot;);
-}
-
-void HighFidelityTypeProfiler::insertNewLocation(TypeLocation* location)
-{
-    if (verbose)
-        dataLogF(&quot;Registering location:: divotStart:%u, divotEnd:%u\n&quot;, location-&gt;m_divotStart, location-&gt;m_divotEnd);
-
-    if (!m_bucketMap.contains(location-&gt;m_sourceID)) {
-        Vector&lt;TypeLocation*&gt; bucket;
-        m_bucketMap.set(location-&gt;m_sourceID, bucket);
-    }
-
-    Vector&lt;TypeLocation*&gt;&amp; bucket = m_bucketMap.find(location-&gt;m_sourceID)-&gt;value;
-    bucket.append(location);
-}
-
-void HighFidelityTypeProfiler::getTypesForVariableAtOffsetForInspector(TypeProfilerSearchDescriptor descriptor, unsigned divot, intptr_t sourceID, RefPtr&lt;Inspector::TypeBuilder::Runtime::TypeDescription&gt;&amp; description)
-{
-    TypeLocation* location = findLocation(divot, sourceID, descriptor);
-    if (!location)
-        return;
-
-    if (location-&gt;m_globalTypeSet &amp;&amp; location-&gt;m_globalVariableID != HighFidelityNoGlobalIDExists) {
-        description-&gt;setDisplayTypeName(location-&gt;m_globalTypeSet-&gt;displayName());
-        description-&gt;setGlobalPrimitiveTypeNames(location-&gt;m_globalTypeSet-&gt;allPrimitiveTypeNames());
-        description-&gt;setGlobalStructures(location-&gt;m_globalTypeSet-&gt;allStructureRepresentations());
-    } else
-        description-&gt;setDisplayTypeName(location-&gt;m_instructionTypeSet-&gt;displayName());
-
-    description-&gt;setLocalPrimitiveTypeNames(location-&gt;m_instructionTypeSet-&gt;allPrimitiveTypeNames());
-    description-&gt;setLocalStructures(location-&gt;m_instructionTypeSet-&gt;allStructureRepresentations());
-}
-
-static bool descriptorMatchesTypeLocation(TypeProfilerSearchDescriptor descriptor, TypeLocation* location)
-{
-    if (descriptor == TypeProfilerSearchDescriptorFunctionReturn &amp;&amp; location-&gt;m_globalVariableID == HighFidelityReturnStatement)  
-        return true;
-
-    if (descriptor == TypeProfilerSearchDescriptorNormal &amp;&amp; location-&gt;m_globalVariableID != HighFidelityReturnStatement)  
-        return true;
-
-    return false;
-}
-
-TypeLocation* HighFidelityTypeProfiler::findLocation(unsigned divot, intptr_t sourceID, TypeProfilerSearchDescriptor descriptor)
-{
-    QueryKey queryKey(sourceID, divot);
-    auto iter = m_queryCache.find(queryKey);
-    if (iter != m_queryCache.end())
-        return iter-&gt;value;
-
-    if (!m_functionHasExecutedCache.hasExecutedAtOffset(sourceID, divot))
-        return nullptr;
-
-    ASSERT(m_bucketMap.contains(sourceID));
-
-    Vector&lt;TypeLocation*&gt;&amp; bucket = m_bucketMap.find(sourceID)-&gt;value;
-    TypeLocation* bestMatch = nullptr;
-    unsigned distance = UINT_MAX; // Because assignments may be nested, make sure we find the closest enclosing assignment to this character offset.
-    for (size_t i = 0, size = bucket.size(); i &lt; size; i++) {
-        TypeLocation* location = bucket.at(i);
-        if (descriptor == TypeProfilerSearchDescriptorFunctionReturn &amp;&amp; descriptorMatchesTypeLocation(descriptor, location) &amp;&amp; location-&gt;m_divotForFunctionOffsetIfReturnStatement == divot)
-            return location;
-
-        if (location-&gt;m_divotStart &lt;= divot &amp;&amp; divot &lt;= location-&gt;m_divotEnd &amp;&amp; location-&gt;m_divotEnd - location-&gt;m_divotStart &lt;= distance &amp;&amp; descriptorMatchesTypeLocation(descriptor, location)) {
-            distance = location-&gt;m_divotEnd - location-&gt;m_divotStart;
-            bestMatch = location;
-        }
-    }
-
-    if (bestMatch)
-        m_queryCache.set(queryKey, bestMatch);
-    // FIXME: BestMatch should never be null past this point. This doesn't hold currently because we ignore var assignments when code contains eval/With (VarInjection). 
-    // https://bugs.webkit.org/show_bug.cgi?id=135184
-    return bestMatch;
-}
-
-} //namespace JSC
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeHighFidelityTypeProfilerh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.h (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.h        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -1,115 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef HighFidelityTypeProfiler_h
-#define HighFidelityTypeProfiler_h
-
-#include &quot;CodeBlock.h&quot;
-#include &quot;FunctionHasExecutedCache.h&quot;
-#include &quot;TypeLocationCache.h&quot;
-#include &lt;wtf/HashMap.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-#include &lt;wtf/Vector.h&gt;
-
-namespace Inspector { namespace TypeBuilder  { namespace Runtime {
-class TypeDescription;
-}}}
-
-namespace JSC {
-
-class TypeLocation;
-
-struct QueryKey {
-    QueryKey()
-        : m_sourceID(0)
-        , m_divot(0)
-    { }
-
-    QueryKey(intptr_t sourceID, unsigned divot)
-        : m_sourceID(sourceID)
-        , m_divot(divot)
-    { }
-
-    QueryKey(WTF::HashTableDeletedValueType)
-        : m_sourceID(INTPTR_MAX)
-        , m_divot(UINT_MAX)
-    { }
-
-    bool isHashTableDeletedValue() const { return m_sourceID == INTPTR_MAX &amp;&amp; m_divot == UINT_MAX; }
-    bool operator==(const QueryKey&amp; other) const { return m_sourceID == other.m_sourceID &amp;&amp; m_divot == other.m_divot; }
-    unsigned hash() const { return m_sourceID + m_divot; }
-
-    intptr_t m_sourceID;
-    unsigned m_divot;
-};
-
-struct QueryKeyHash {
-    static unsigned hash(const QueryKey&amp; key) { return key.hash(); }
-    static bool equal(const QueryKey&amp; a, const QueryKey&amp; b) { return a == b; }
-    static const bool safeToCompareToEmptyOrDeleted = true;
-};
-
-} //namespace JSC
-
-namespace WTF {
-
-template&lt;typename T&gt; struct DefaultHash;
-template&lt;&gt; struct DefaultHash&lt;JSC::QueryKey&gt; {
-    typedef JSC::QueryKeyHash Hash;
-};
-
-template&lt;typename T&gt; struct HashTraits;
-template&lt;&gt; struct HashTraits&lt;JSC::QueryKey&gt; : SimpleClassHashTraits&lt;JSC::QueryKey&gt; { };
-
-} // namespace WTF
-
-namespace JSC {
-
-enum TypeProfilerSearchDescriptor {
-    TypeProfilerSearchDescriptorNormal = 1,
-    TypeProfilerSearchDescriptorFunctionReturn = 2
-};
-
-class HighFidelityTypeProfiler {
-public:
-    void logTypesForTypeLocation(TypeLocation*);
-    void getTypesForVariableAtOffsetForInspector(TypeProfilerSearchDescriptor descriptor, unsigned divot, intptr_t sourceID, RefPtr&lt;Inspector::TypeBuilder::Runtime::TypeDescription&gt;&amp;);
-    void insertNewLocation(TypeLocation*);
-    FunctionHasExecutedCache* functionHasExecutedCache() { return &amp;m_functionHasExecutedCache; }
-    TypeLocationCache* typeLocationCache() { return &amp;m_typeLocationCache; }
-    
-private:
-    TypeLocation* findLocation(unsigned divot, intptr_t sourceID, TypeProfilerSearchDescriptor descriptor);
-    typedef HashMap&lt;intptr_t, Vector&lt;TypeLocation*&gt;&gt; SourceIDToLocationBucketMap;
-    SourceIDToLocationBucketMap m_bucketMap;
-    FunctionHasExecutedCache m_functionHasExecutedCache;
-    TypeLocationCache m_typeLocationCache;
-    typedef HashMap&lt;QueryKey, TypeLocation*&gt; TypeLocationQueryCache;
-    TypeLocationQueryCache m_queryCache;
-};
-
-} // namespace JSC
-
-#endif //HighFidelityTypeProfiler_h
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeOptionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Options.h (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Options.h        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/Options.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -274,7 +274,7 @@
</span><span class="cx">     v(unsigned, gcMaxHeapSize, 0) \
</span><span class="cx">     v(bool, recordGCPauseTimes, false) \
</span><span class="cx">     v(bool, logHeapStatisticsAtExit, false) \
</span><del>-    v(bool, profileTypesWithHighFidelity, false) \
</del><ins>+    v(bool, enableTypeProfiler, false) \
</ins><span class="cx">     \
</span><span class="cx">     v(bool, enableExceptionFuzz, false) \
</span><span class="cx">     v(unsigned, fireExceptionFuzzAt, 0)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSymbolTablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SymbolTable.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SymbolTable.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/SymbolTable.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -187,7 +187,7 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void SymbolTable::prepareForHighFidelityTypeProfiling(const ConcurrentJITLocker&amp;)
</del><ins>+void SymbolTable::prepareForTypeProfiling(const ConcurrentJITLocker&amp;)
</ins><span class="cx"> {
</span><span class="cx">     if (m_typeProfilingRareData)
</span><span class="cx">         return;
</span><span class="lines">@@ -195,7 +195,7 @@
</span><span class="cx">     m_typeProfilingRareData = std::make_unique&lt;TypeProfilingRareData&gt;();
</span><span class="cx"> 
</span><span class="cx">     for (auto iter = m_map.begin(), end = m_map.end(); iter != end; ++iter) {
</span><del>-        m_typeProfilingRareData-&gt;m_uniqueIDMap.set(iter-&gt;key, HighFidelityNeedsUniqueIDGeneration);
</del><ins>+        m_typeProfilingRareData-&gt;m_uniqueIDMap.set(iter-&gt;key, TypeProfilerNeedsUniqueIDGeneration);
</ins><span class="cx">         m_typeProfilingRareData-&gt;m_registerToVariableMap.set(iter-&gt;value.getIndex(), iter-&gt;key);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -207,10 +207,10 @@
</span><span class="cx">     auto iter = m_typeProfilingRareData-&gt;m_uniqueIDMap.find(key);
</span><span class="cx">     auto end = m_typeProfilingRareData-&gt;m_uniqueIDMap.end();
</span><span class="cx">     if (iter == end)
</span><del>-        return HighFidelityNoGlobalIDExists;
</del><ins>+        return TypeProfilerNoGlobalIDExists;
</ins><span class="cx"> 
</span><span class="cx">     GlobalVariableID id = iter-&gt;value;
</span><del>-    if (id == HighFidelityNeedsUniqueIDGeneration) {
</del><ins>+    if (id == TypeProfilerNeedsUniqueIDGeneration) {
</ins><span class="cx">         id = vm.getNextUniqueVariableID();
</span><span class="cx">         m_typeProfilingRareData-&gt;m_uniqueIDMap.set(key, id);
</span><span class="cx">         m_typeProfilingRareData-&gt;m_uniqueTypeSetMap.set(key, TypeSet::create()); // Make a new global typeset for this corresponding ID.
</span><span class="lines">@@ -226,7 +226,7 @@
</span><span class="cx">     auto iter = m_typeProfilingRareData-&gt;m_registerToVariableMap.find(registerIndex);
</span><span class="cx">     auto end = m_typeProfilingRareData-&gt;m_registerToVariableMap.end();
</span><span class="cx">     if (iter == end)
</span><del>-        return HighFidelityNoGlobalIDExists;
</del><ins>+        return TypeProfilerNoGlobalIDExists;
</ins><span class="cx"> 
</span><span class="cx">     return uniqueIDForVariable(locker, iter-&gt;value.get(), vm);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSymbolTableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SymbolTable.h (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SymbolTable.h        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/SymbolTable.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -479,7 +479,7 @@
</span><span class="cx">     
</span><span class="cx">     SymbolTable* cloneCapturedNames(VM&amp;);
</span><span class="cx"> 
</span><del>-    void prepareForHighFidelityTypeProfiling(const ConcurrentJITLocker&amp;);
</del><ins>+    void prepareForTypeProfiling(const ConcurrentJITLocker&amp;);
</ins><span class="cx"> 
</span><span class="cx">     static void visitChildren(JSCell*, SlotVisitor&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeTypeProfilercppfromrev172818trunkSourceJavaScriptCoreruntimeHighFidelityTypeProfilercpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/TypeProfiler.cpp (from rev 172818, trunk/Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.cpp) (0 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/TypeProfiler.cpp                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/TypeProfiler.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -0,0 +1,129 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;TypeProfiler.h&quot;
+
+#include &quot;InspectorJSTypeBuilders.h&quot;
+#include &quot;TypeLocation.h&quot;
+
+namespace JSC {
+
+static const bool verbose = false;
+
+void TypeProfiler::logTypesForTypeLocation(TypeLocation* location)
+{
+    TypeProfilerSearchDescriptor descriptor = location-&gt;m_globalVariableID == TypeProfilerReturnStatement ? TypeProfilerSearchDescriptorFunctionReturn : TypeProfilerSearchDescriptorNormal;
+
+    dataLogF(&quot;[Start, End]::[%u, %u]\n&quot;, location-&gt;m_divotStart, location-&gt;m_divotEnd);
+
+    if (findLocation(location-&gt;m_divotStart, location-&gt;m_sourceID, descriptor))
+        dataLog(&quot;\t\t[Entry IS in System]\n&quot;);
+    else
+        dataLog(&quot;\t\t[Entry IS NOT in system]\n&quot;);
+
+    dataLog(&quot;\t\t&quot;, location-&gt;m_globalVariableID == TypeProfilerReturnStatement ? &quot;[Return Statement]&quot; : &quot;[Normal Statement]&quot;, &quot;\n&quot;);
+
+    dataLog(&quot;\t\t#Local#\n\t\t&quot;, location-&gt;m_instructionTypeSet-&gt;seenTypes().replace(&quot;\n&quot;, &quot;\n\t\t&quot;), &quot;\n&quot;);
+    if (location-&gt;m_globalTypeSet)
+        dataLog(&quot;\t\t#Global#\n\t\t&quot;, location-&gt;m_globalTypeSet-&gt;seenTypes().replace(&quot;\n&quot;, &quot;\n\t\t&quot;), &quot;\n&quot;);
+}
+
+void TypeProfiler::insertNewLocation(TypeLocation* location)
+{
+    if (verbose)
+        dataLogF(&quot;Registering location:: divotStart:%u, divotEnd:%u\n&quot;, location-&gt;m_divotStart, location-&gt;m_divotEnd);
+
+    if (!m_bucketMap.contains(location-&gt;m_sourceID)) {
+        Vector&lt;TypeLocation*&gt; bucket;
+        m_bucketMap.set(location-&gt;m_sourceID, bucket);
+    }
+
+    Vector&lt;TypeLocation*&gt;&amp; bucket = m_bucketMap.find(location-&gt;m_sourceID)-&gt;value;
+    bucket.append(location);
+}
+
+void TypeProfiler::getTypesForVariableAtOffsetForInspector(TypeProfilerSearchDescriptor descriptor, unsigned divot, intptr_t sourceID, RefPtr&lt;Inspector::TypeBuilder::Runtime::TypeDescription&gt;&amp; description)
+{
+    TypeLocation* location = findLocation(divot, sourceID, descriptor);
+    if (!location)
+        return;
+
+    if (location-&gt;m_globalTypeSet &amp;&amp; location-&gt;m_globalVariableID != TypeProfilerNoGlobalIDExists) {
+        description-&gt;setDisplayTypeName(location-&gt;m_globalTypeSet-&gt;displayName());
+        description-&gt;setGlobalPrimitiveTypeNames(location-&gt;m_globalTypeSet-&gt;allPrimitiveTypeNames());
+        description-&gt;setGlobalStructures(location-&gt;m_globalTypeSet-&gt;allStructureRepresentations());
+    } else
+        description-&gt;setDisplayTypeName(location-&gt;m_instructionTypeSet-&gt;displayName());
+
+    description-&gt;setLocalPrimitiveTypeNames(location-&gt;m_instructionTypeSet-&gt;allPrimitiveTypeNames());
+    description-&gt;setLocalStructures(location-&gt;m_instructionTypeSet-&gt;allStructureRepresentations());
+}
+
+static bool descriptorMatchesTypeLocation(TypeProfilerSearchDescriptor descriptor, TypeLocation* location)
+{
+    if (descriptor == TypeProfilerSearchDescriptorFunctionReturn &amp;&amp; location-&gt;m_globalVariableID == TypeProfilerReturnStatement)  
+        return true;
+
+    if (descriptor == TypeProfilerSearchDescriptorNormal &amp;&amp; location-&gt;m_globalVariableID != TypeProfilerReturnStatement)  
+        return true;
+
+    return false;
+}
+
+TypeLocation* TypeProfiler::findLocation(unsigned divot, intptr_t sourceID, TypeProfilerSearchDescriptor descriptor)
+{
+    QueryKey queryKey(sourceID, divot);
+    auto iter = m_queryCache.find(queryKey);
+    if (iter != m_queryCache.end())
+        return iter-&gt;value;
+
+    if (!m_functionHasExecutedCache.hasExecutedAtOffset(sourceID, divot))
+        return nullptr;
+
+    ASSERT(m_bucketMap.contains(sourceID));
+
+    Vector&lt;TypeLocation*&gt;&amp; bucket = m_bucketMap.find(sourceID)-&gt;value;
+    TypeLocation* bestMatch = nullptr;
+    unsigned distance = UINT_MAX; // Because assignments may be nested, make sure we find the closest enclosing assignment to this character offset.
+    for (size_t i = 0, size = bucket.size(); i &lt; size; i++) {
+        TypeLocation* location = bucket.at(i);
+        if (descriptor == TypeProfilerSearchDescriptorFunctionReturn &amp;&amp; descriptorMatchesTypeLocation(descriptor, location) &amp;&amp; location-&gt;m_divotForFunctionOffsetIfReturnStatement == divot)
+            return location;
+
+        if (location-&gt;m_divotStart &lt;= divot &amp;&amp; divot &lt;= location-&gt;m_divotEnd &amp;&amp; location-&gt;m_divotEnd - location-&gt;m_divotStart &lt;= distance &amp;&amp; descriptorMatchesTypeLocation(descriptor, location)) {
+            distance = location-&gt;m_divotEnd - location-&gt;m_divotStart;
+            bestMatch = location;
+        }
+    }
+
+    if (bestMatch)
+        m_queryCache.set(queryKey, bestMatch);
+    // FIXME: BestMatch should never be null past this point. This doesn't hold currently because we ignore var assignments when code contains eval/With (VarInjection). 
+    // https://bugs.webkit.org/show_bug.cgi?id=135184
+    return bestMatch;
+}
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeTypeProfilerhfromrev172818trunkSourceJavaScriptCoreruntimeHighFidelityTypeProfilerh"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/TypeProfiler.h (from rev 172818, trunk/Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.h) (0 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/TypeProfiler.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/TypeProfiler.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -0,0 +1,115 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef TypeProfiler_h
+#define TypeProfiler_h
+
+#include &quot;CodeBlock.h&quot;
+#include &quot;FunctionHasExecutedCache.h&quot;
+#include &quot;TypeLocationCache.h&quot;
+#include &lt;wtf/HashMap.h&gt;
+#include &lt;wtf/Vector.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace Inspector { namespace TypeBuilder  { namespace Runtime {
+class TypeDescription;
+}}}
+
+namespace JSC {
+
+class TypeLocation;
+
+struct QueryKey {
+    QueryKey()
+        : m_sourceID(0)
+        , m_divot(0)
+    { }
+
+    QueryKey(intptr_t sourceID, unsigned divot)
+        : m_sourceID(sourceID)
+        , m_divot(divot)
+    { }
+
+    QueryKey(WTF::HashTableDeletedValueType)
+        : m_sourceID(INTPTR_MAX)
+        , m_divot(UINT_MAX)
+    { }
+
+    bool isHashTableDeletedValue() const { return m_sourceID == INTPTR_MAX &amp;&amp; m_divot == UINT_MAX; }
+    bool operator==(const QueryKey&amp; other) const { return m_sourceID == other.m_sourceID &amp;&amp; m_divot == other.m_divot; }
+    unsigned hash() const { return m_sourceID + m_divot; }
+
+    intptr_t m_sourceID;
+    unsigned m_divot;
+};
+
+struct QueryKeyHash {
+    static unsigned hash(const QueryKey&amp; key) { return key.hash(); }
+    static bool equal(const QueryKey&amp; a, const QueryKey&amp; b) { return a == b; }
+    static const bool safeToCompareToEmptyOrDeleted = true;
+};
+
+} // namespace JSC
+
+namespace WTF {
+
+template&lt;typename T&gt; struct DefaultHash;
+template&lt;&gt; struct DefaultHash&lt;JSC::QueryKey&gt; {
+    typedef JSC::QueryKeyHash Hash;
+};
+
+template&lt;typename T&gt; struct HashTraits;
+template&lt;&gt; struct HashTraits&lt;JSC::QueryKey&gt; : SimpleClassHashTraits&lt;JSC::QueryKey&gt; { };
+
+} // namespace WTF
+
+namespace JSC {
+
+enum TypeProfilerSearchDescriptor {
+    TypeProfilerSearchDescriptorNormal = 1,
+    TypeProfilerSearchDescriptorFunctionReturn = 2
+};
+
+class TypeProfiler {
+public:
+    void logTypesForTypeLocation(TypeLocation*);
+    void getTypesForVariableAtOffsetForInspector(TypeProfilerSearchDescriptor, unsigned divot, intptr_t sourceID, RefPtr&lt;Inspector::TypeBuilder::Runtime::TypeDescription&gt;&amp;);
+    void insertNewLocation(TypeLocation*);
+    FunctionHasExecutedCache* functionHasExecutedCache() { return &amp;m_functionHasExecutedCache; }
+    TypeLocationCache* typeLocationCache() { return &amp;m_typeLocationCache; }
+    
+private:
+    TypeLocation* findLocation(unsigned divot, intptr_t sourceID, TypeProfilerSearchDescriptor);
+    typedef HashMap&lt;intptr_t, Vector&lt;TypeLocation*&gt;&gt; SourceIDToLocationBucketMap;
+    SourceIDToLocationBucketMap m_bucketMap;
+    FunctionHasExecutedCache m_functionHasExecutedCache;
+    TypeLocationCache m_typeLocationCache;
+    typedef HashMap&lt;QueryKey, TypeLocation*&gt; TypeLocationQueryCache;
+    TypeLocationQueryCache m_queryCache;
+};
+
+} // namespace JSC
+
+#endif // TypeProfiler_h
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeTypeProfilerLogcppfromrev172818trunkSourceJavaScriptCoreruntimeHighFidelityLogcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/TypeProfilerLog.cpp (from rev 172818, trunk/Source/JavaScriptCore/runtime/HighFidelityLog.cpp) (0 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/TypeProfilerLog.cpp                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/TypeProfilerLog.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -0,0 +1,94 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 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;TypeProfilerLog.h&quot;
+
+#include &quot;JSCJSValueInlines.h&quot;
+#include &quot;TypeLocation.h&quot;
+#include &lt;wtf/CurrentTime.h&gt;
+
+
+namespace JSC {
+
+static const bool verbose = false;
+
+void TypeProfilerLog::initializeLog()
+{
+    ASSERT(!m_logStartPtr);
+    m_logSize = 50000;
+    m_logStartPtr = new LogEntry[m_logSize];
+    m_currentLogEntryPtr = m_logStartPtr;
+    m_logEndPtr = m_logStartPtr + m_logSize;
+}
+
+TypeProfilerLog::~TypeProfilerLog()
+{
+    delete[] m_logStartPtr;
+}
+
+void TypeProfilerLog::processLogEntries(String reason)
+{
+    if (verbose)
+        dataLog(&quot;Process caller:'&quot;, reason, &quot;'&quot;);
+
+    double before = currentTimeMS();
+    LogEntry* entry = m_logStartPtr;
+    HashMap&lt;StructureID, RefPtr&lt;StructureShape&gt;&gt; seenShapes;
+    while (entry != m_currentLogEntryPtr) {
+        StructureID id = entry-&gt;structureID;
+        RefPtr&lt;StructureShape&gt; shape; 
+        JSValue value = entry-&gt;value;
+        if (id) {
+            auto iter = seenShapes.find(id);
+            if (iter == seenShapes.end()) {
+                shape = Heap::heap(value.asCell())-&gt;structureIDTable().get(entry-&gt;structureID)-&gt;toStructureShape(value);
+                seenShapes.set(id, shape);
+            } else
+                shape = iter-&gt;value;
+        }
+
+        RuntimeType type = TypeSet::getRuntimeTypeForValue(value);
+        TypeLocation* location = entry-&gt;location;
+        location-&gt;m_lastSeenType = type;
+        if (location-&gt;m_globalTypeSet)
+            location-&gt;m_globalTypeSet-&gt;addTypeInformation(type, shape, id);
+        location-&gt;m_instructionTypeSet-&gt;addTypeInformation(type, shape, id);
+
+        entry++;
+    }
+
+    m_currentLogEntryPtr = m_logStartPtr;
+
+    if (verbose) {
+        double after = currentTimeMS();
+        dataLogF(&quot; Processing the log took: '%f' ms\n&quot;, after - before);
+    }
+}
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeTypeProfilerLoghfromrev172818trunkSourceJavaScriptCoreruntimeHighFidelityLogh"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/TypeProfilerLog.h (from rev 172818, trunk/Source/JavaScriptCore/runtime/HighFidelityLog.h) (0 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/TypeProfilerLog.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/TypeProfilerLog.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -0,0 +1,94 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 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 TypeProfilerLog_h
+#define TypeProfilerLog_h
+
+#include &quot;JSCJSValue.h&quot;
+#include &quot;Structure.h&quot;
+#include &quot;TypeProfiler.h&quot;
+#include &lt;wtf/ByteSpinLock.h&gt;
+
+namespace JSC {
+
+class TypeLocation;
+
+class TypeProfilerLog {
+
+public:
+    struct LogEntry {
+        public:
+        JSValue value;
+        TypeLocation* location; 
+        StructureID structureID;
+
+        static ptrdiff_t structureIDOffset() { return OBJECT_OFFSETOF(LogEntry, structureID); }
+        static ptrdiff_t valueOffset() { return OBJECT_OFFSETOF(LogEntry, value); }
+        static ptrdiff_t locationOffset() { return OBJECT_OFFSETOF(LogEntry, location); }
+    };
+
+
+    TypeProfilerLog()
+        : m_logStartPtr(0)
+    {
+        initializeLog();
+    }
+
+    ~TypeProfilerLog();
+
+    ALWAYS_INLINE void recordTypeInformationForLocation(JSValue value, TypeLocation* location)
+    {
+        ASSERT(m_logStartPtr);
+
+        m_currentLogEntryPtr-&gt;location = location;
+        m_currentLogEntryPtr-&gt;value = value;
+        m_currentLogEntryPtr-&gt;structureID = (value.isCell() ? value.asCell()-&gt;structureID() : 0);
+    
+        m_currentLogEntryPtr += 1;
+        if (UNLIKELY(m_currentLogEntryPtr == m_logEndPtr))
+            processLogEntries(ASCIILiteral(&quot;Log Full&quot;));
+    }
+
+    void processLogEntries(String);
+    LogEntry* logEndPtr() const { return m_logEndPtr; }
+
+    static ptrdiff_t logStartOffset() { return OBJECT_OFFSETOF(TypeProfilerLog, m_logStartPtr); }
+    static ptrdiff_t currentLogEntryOffset() { return OBJECT_OFFSETOF(TypeProfilerLog, m_currentLogEntryPtr); }
+
+private:
+    void initializeLog();
+
+    unsigned m_logSize;
+    LogEntry* m_logStartPtr;
+    LogEntry* m_currentLogEntryPtr;
+    LogEntry* m_logEndPtr;
+};
+
+} // namespace JSC
+
+#endif // TypeProfilerLog_h
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.cpp (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.cpp        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/VM.cpp        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -48,8 +48,6 @@
</span><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><span class="cx"> #include &quot;Heap.h&quot;
</span><span class="cx"> #include &quot;HeapIterationScope.h&quot;
</span><del>-#include &quot;HighFidelityTypeProfiler.h&quot;
-#include &quot;HighFidelityLog.h&quot;
</del><span class="cx"> #include &quot;HostCallReturnValue.h&quot;
</span><span class="cx"> #include &quot;Identifier.h&quot;
</span><span class="cx"> #include &quot;IncrementalSweeper.h&quot;
</span><span class="lines">@@ -84,6 +82,8 @@
</span><span class="cx"> #include &quot;StrictEvalActivation.h&quot;
</span><span class="cx"> #include &quot;StrongInlines.h&quot;
</span><span class="cx"> #include &quot;StructureInlines.h&quot;
</span><ins>+#include &quot;TypeProfiler.h&quot;
+#include &quot;TypeProfilerLog.h&quot;
</ins><span class="cx"> #include &quot;UnlinkedCodeBlock.h&quot;
</span><span class="cx"> #include &quot;WeakMapData.h&quot;
</span><span class="cx"> #include &lt;wtf/ProcessID.h&gt;
</span><span class="lines">@@ -193,7 +193,7 @@
</span><span class="cx">     , m_enabledProfiler(nullptr)
</span><span class="cx">     , m_builtinExecutables(BuiltinExecutables::create(*this))
</span><span class="cx">     , m_nextUniqueVariableID(1)
</span><del>-    , m_highFidelityTypeProfilingEnabledCount(0)
</del><ins>+    , m_typeProfilerEnabledCount(0)
</ins><span class="cx"> {
</span><span class="cx">     interpreter = new Interpreter(*this);
</span><span class="cx">     StackBounds stack = wtfThreadData().stack();
</span><span class="lines">@@ -286,8 +286,8 @@
</span><span class="cx">     // won't use this.
</span><span class="cx">     m_typedArrayController = adoptRef(new SimpleTypedArrayController());
</span><span class="cx"> 
</span><del>-    if (Options::profileTypesWithHighFidelity())
-        enableHighFidelityTypeProfiling();
</del><ins>+    if (Options::enableTypeProfiler())
+        enableTypeProfiler();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> VM::~VM()
</span><span class="lines">@@ -899,29 +899,29 @@
</span><span class="cx">     return m_typeLocationInfo-&gt;add(); 
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool VM::enableHighFidelityTypeProfiling()
</del><ins>+bool VM::enableTypeProfiler()
</ins><span class="cx"> {
</span><span class="cx">     bool needsToRecompile = false;
</span><del>-    if (!m_highFidelityTypeProfilingEnabledCount) {
-        m_highFidelityTypeProfiler = std::make_unique&lt;HighFidelityTypeProfiler&gt;();
-        m_highFidelityLog = std::make_unique&lt;HighFidelityLog&gt;();
</del><ins>+    if (!m_typeProfilerEnabledCount) {
+        m_typeProfiler = std::make_unique&lt;TypeProfiler&gt;();
+        m_typeProfilerLog = std::make_unique&lt;TypeProfilerLog&gt;();
</ins><span class="cx">         m_typeLocationInfo = std::make_unique&lt;Bag&lt;TypeLocation&gt;&gt;();
</span><span class="cx">         needsToRecompile = true;
</span><span class="cx">     }
</span><del>-    m_highFidelityTypeProfilingEnabledCount++;
</del><ins>+    m_typeProfilerEnabledCount++;
</ins><span class="cx"> 
</span><span class="cx">     return needsToRecompile;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool VM::disableHighFidelityTypeProfiling()
</del><ins>+bool VM::disableTypeProfiler()
</ins><span class="cx"> {
</span><del>-    RELEASE_ASSERT(m_highFidelityTypeProfilingEnabledCount &gt; 0);
</del><ins>+    RELEASE_ASSERT(m_typeProfilerEnabledCount &gt; 0);
</ins><span class="cx"> 
</span><span class="cx">     bool needsToRecompile = false;
</span><del>-    m_highFidelityTypeProfilingEnabledCount--;
-    if (!m_highFidelityTypeProfilingEnabledCount) {
-        m_highFidelityTypeProfiler.reset(nullptr);
-        m_highFidelityLog.reset(nullptr);
</del><ins>+    m_typeProfilerEnabledCount--;
+    if (!m_typeProfilerEnabledCount) {
+        m_typeProfiler.reset(nullptr);
+        m_typeProfilerLog.reset(nullptr);
</ins><span class="cx">         m_typeLocationInfo.reset(nullptr);
</span><span class="cx">         needsToRecompile = true;
</span><span class="cx">     }
</span><span class="lines">@@ -929,13 +929,13 @@
</span><span class="cx">     return needsToRecompile;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void VM::dumpHighFidelityProfilingTypes()
</del><ins>+void VM::dumpTypeProfilerData()
</ins><span class="cx"> {
</span><del>-    if (!isProfilingTypesWithHighFidelity())
</del><ins>+    if (!typeProfiler())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    highFidelityLog()-&gt;processHighFidelityLog(&quot;VM Dump Types&quot;);
-    HighFidelityTypeProfiler* profiler = m_highFidelityTypeProfiler.get();
</del><ins>+    typeProfilerLog()-&gt;processLogEntries(ASCIILiteral(&quot;VM Dump Types&quot;));
+    TypeProfiler* profiler = m_typeProfiler.get();
</ins><span class="cx">     for (Bag&lt;TypeLocation&gt;::iterator iter = m_typeLocationInfo-&gt;begin(); !!iter; ++iter) {
</span><span class="cx">         TypeLocation* location = *iter;
</span><span class="cx">         profiler-&gt;logTypesForTypeLocation(location);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.h (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.h        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/JavaScriptCore/runtime/VM.h        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -77,8 +77,8 @@
</span><span class="cx">     class CommonIdentifiers;
</span><span class="cx">     class ExecState;
</span><span class="cx">     class HandleStack;
</span><del>-    class HighFidelityTypeProfiler;
-    class HighFidelityLog;
</del><ins>+    class TypeProfiler;
+    class TypeProfilerLog;
</ins><span class="cx">     class Identifier;
</span><span class="cx">     class Interpreter;
</span><span class="cx">     class JSGlobalObject;
</span><span class="lines">@@ -497,13 +497,12 @@
</span><span class="cx">         
</span><span class="cx">         BuiltinExecutables* builtinExecutables() { return m_builtinExecutables.get(); }
</span><span class="cx"> 
</span><del>-        bool isProfilingTypesWithHighFidelity() { return !!m_highFidelityTypeProfiler; }
-        bool enableHighFidelityTypeProfiling();
-        bool disableHighFidelityTypeProfiling();
-        HighFidelityLog* highFidelityLog() { return m_highFidelityLog.get(); }
-        HighFidelityTypeProfiler* highFidelityTypeProfiler() { return m_highFidelityTypeProfiler.get(); }
</del><ins>+        bool enableTypeProfiler();
+        bool disableTypeProfiler();
+        TypeProfilerLog* typeProfilerLog() { return m_typeProfilerLog.get(); }
+        TypeProfiler* typeProfiler() { return m_typeProfiler.get(); }
</ins><span class="cx">         TypeLocation* nextTypeLocation();
</span><del>-        JS_EXPORT_PRIVATE void dumpHighFidelityProfilingTypes();
</del><ins>+        JS_EXPORT_PRIVATE void dumpTypeProfilerData();
</ins><span class="cx">         GlobalVariableID getNextUniqueVariableID() { return m_nextUniqueVariableID++; }
</span><span class="cx"> 
</span><span class="cx">     private:
</span><span class="lines">@@ -554,10 +553,10 @@
</span><span class="cx">         OwnPtr&lt;BuiltinExecutables&gt; m_builtinExecutables;
</span><span class="cx">         RefCountedArray&lt;StackFrame&gt; m_exceptionStack;
</span><span class="cx">         HashMap&lt;String, RefPtr&lt;WatchpointSet&gt;&gt; m_impurePropertyWatchpointSets;
</span><del>-        std::unique_ptr&lt;HighFidelityTypeProfiler&gt; m_highFidelityTypeProfiler;
-        std::unique_ptr&lt;HighFidelityLog&gt; m_highFidelityLog;
</del><ins>+        std::unique_ptr&lt;TypeProfiler&gt; m_typeProfiler;
+        std::unique_ptr&lt;TypeProfilerLog&gt; m_typeProfilerLog;
</ins><span class="cx">         GlobalVariableID m_nextUniqueVariableID;
</span><del>-        unsigned m_highFidelityTypeProfilingEnabledCount;
</del><ins>+        unsigned m_typeProfilerEnabledCount;
</ins><span class="cx">         std::unique_ptr&lt;Bag&lt;TypeLocation&gt;&gt; m_typeLocationInfo;
</span><span class="cx">     };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/WebInspectorUI/ChangeLog        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-08-20  Saam Barati  &lt;sbarati@apple.com&gt;
+
+        Rename HighFidelityTypeProfiling variables for more clarity
+        https://bugs.webkit.org/show_bug.cgi?id=135899
+
+        Reviewed by Geoffrey Garen.
+
+        Change a reference in a comment to a JavaScriptCore file to its 
+        newly renamed variant.
+
+        * UserInterface/Models/ScriptSyntaxTree.js:
+
</ins><span class="cx"> 2014-08-18  Saam Barati  &lt;sbarati@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: Introduce an inspector Abstract Syntax Tree.
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsScriptSyntaxTreejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Models/ScriptSyntaxTree.js (172819 => 172820)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/ScriptSyntaxTree.js        2014-08-21 00:32:59 UTC (rev 172819)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/ScriptSyntaxTree.js        2014-08-21 01:03:20 UTC (rev 172820)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-// This should be kept in sync with an enum in JavaSciptCore/runtime/HighFidelityTypeProfiler.h
</del><ins>+// This should be kept in sync with an enum in JavaSciptCore/runtime/TypeProfiler.h
</ins><span class="cx"> WebInspector.ScriptSyntaxTree.TypeProfilerSearchDescriptor = {
</span><span class="cx">     NormalExpression: 1,
</span><span class="cx">     FunctionReturn: 2
</span></span></pre>
</div>
</div>

</body>
</html>