Rename HighFidelityTypeProfiling variables for more clarity
https://bugs.webkit.org/show_bug.cgi?id=135899
Patch by Saam Barati <sbarati@apple.com> on 2014-08-20
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
Many names that are used in the type profiling infrastructure
prefix themselves with "HighFidelity" or include the words "high"
and/or "fidelity" in some way. But the words "high" and "fidelity" don't
add anything descriptive to the names surrounding type profiling.
So this patch removes all uses of "HighFidelity" and its variants.
Most renamings change "HighFidelity*" to "TypeProfiler*" or simply
drop the prefix "HighFidelity" all together. Now, almost all names
in relation to type profiling contain in them "TypeProfiler" or
"TypeProfiling" or some combination of the words "type" and "profile".
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:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172820 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp b/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
index 573dbec..01d1286 100644
--- a/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
+++ b/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
@@ -139,10 +139,10 @@
return 0;
RegisterID* result = generator.moveToDestinationIfNeeded(dst, generator.thisRegister());
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(generator.thisRegister(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(generator.thisRegister(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
static const unsigned thisLength = 4;
- generator.emitHighFidelityTypeProfilingExpressionInfo(position(), JSTextPosition(-1, position().offset + thisLength, -1));
+ generator.emitTypeProfilerExpressionInfo(position(), JSTextPosition(-1, position().offset + thisLength, -1));
}
return result;
}
@@ -159,9 +159,9 @@
if (Local local = generator.local(m_ident)) {
if (dst == generator.ignoredResult())
return 0;
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(local.get(), ProfileTypesBytecodeHasGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(m_position, JSTextPosition(-1, m_position.offset + m_ident.length(), -1));
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(local.get(), ProfileTypeBytecodeHasGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(m_position, JSTextPosition(-1, m_position.offset + m_ident.length(), -1));
}
return generator.moveToDestinationIfNeeded(dst, local.get());
}
@@ -171,9 +171,9 @@
RefPtr<RegisterID> scope = generator.emitResolveScope(generator.tempDestination(dst), m_ident);
RegisterID* finalDest = generator.finalDestination(dst);
RegisterID* result = generator.emitGetFromScope(finalDest, scope.get(), m_ident, ThrowIfNotFound);
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(finalDest, ProfileTypesBytecodeGetFromScope, &m_ident);
- generator.emitHighFidelityTypeProfilingExpressionInfo(m_position, JSTextPosition(-1, m_position.offset + m_ident.length(), -1));
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(finalDest, ProfileTypeBytecodeGetFromScope, &m_ident);
+ generator.emitTypeProfilerExpressionInfo(m_position, JSTextPosition(-1, m_position.offset + m_ident.length(), -1));
}
return result;
}
@@ -393,9 +393,9 @@
generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
RegisterID* finalDest = generator.finalDestination(dst);
RegisterID* ret = generator.emitGetByVal(finalDest, base.get(), property);
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(finalDest, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(finalDest, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return ret;
}
@@ -419,9 +419,9 @@
generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
RegisterID* finalDest = generator.finalDestination(dst);
RegisterID* ret = generator.emitGetById(finalDest, base, m_ident);
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(finalDest, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(finalDest, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return ret;
}
@@ -503,9 +503,9 @@
CallArguments callArguments(generator, m_args);
generator.emitLoad(callArguments.thisRegister(), jsUndefined());
RegisterID* ret = generator.emitCall(returnValue.get(), func.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd());
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return ret;
}
@@ -524,9 +524,9 @@
// This passes NoExpectedFunction because we expect that if the function is in a
// local variable, then it's not one of our built-in constructors.
RegisterID* ret = generator.emitCall(returnValue.get(), func.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd());
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return ret;
}
@@ -540,9 +540,9 @@
generator.emitResolveScope(callArguments.thisRegister(), m_ident);
generator.emitGetFromScope(func.get(), callArguments.thisRegister(), m_ident, ThrowIfNotFound);
RegisterID* ret = generator.emitCall(returnValue.get(), func.get(), expectedFunction, callArguments, divot(), divotStart(), divotEnd());
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return ret;
}
@@ -559,9 +559,9 @@
CallArguments callArguments(generator, m_args);
generator.emitMove(callArguments.thisRegister(), base.get());
RegisterID* ret = generator.emitCall(returnValue.get(), function.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd());
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return ret;
}
@@ -577,9 +577,9 @@
generator.emitExpressionInfo(subexpressionDivot(), subexpressionStart(), subexpressionEnd());
generator.emitGetById(function.get(), callArguments.thisRegister(), m_ident);
RegisterID* ret = generator.emitCall(returnValue.get(), function.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd());
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return ret;
}
@@ -651,9 +651,9 @@
}
generator.emitLabel(end.get());
}
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return returnValue.get();
}
@@ -765,9 +765,9 @@
generator.emitCall(returnValue.get(), function.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd());
generator.emitLabel(end.get());
}
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return returnValue.get();
}
@@ -802,7 +802,7 @@
if (local.isReadOnly()) {
generator.emitReadOnlyExceptionIfNeeded();
localReg = generator.emitMove(generator.tempDestination(dst), localReg);
- } else if (local.isCaptured() || generator.isProfilingTypesWithHighFidelity()) {
+ } else if (local.isCaptured() || generator.vm()->typeProfiler()) {
RefPtr<RegisterID> tempDst = generator.finalDestination(dst);
ASSERT(dst != localReg);
RefPtr<RegisterID> tempDstSrc = generator.newTemporary();
@@ -810,8 +810,8 @@
generator.emitMove(tempDstSrc.get(), localReg);
emitIncOrDec(generator, tempDstSrc.get(), m_operator);
generator.emitMove(localReg, tempDstSrc.get());
- if (generator.isProfilingTypesWithHighFidelity())
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler())
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
return tempDst.get();
}
return emitPostIncOrDec(generator, generator.finalDestination(dst), localReg, m_operator);
@@ -822,9 +822,9 @@
RefPtr<RegisterID> value = generator.emitGetFromScope(generator.newTemporary(), scope.get(), ident, ThrowIfNotFound);
RefPtr<RegisterID> oldValue = emitPostIncOrDec(generator, generator.finalDestination(dst), value.get(), m_operator);
generator.emitPutToScope(scope.get(), ident, value.get(), ThrowIfNotFound);
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(value.get(), ProfileTypesBytecodePutToScope, &ident);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(value.get(), ProfileTypeBytecodePutToScope, &ident);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return oldValue.get();
@@ -848,9 +848,9 @@
RegisterID* oldValue = emitPostIncOrDec(generator, generator.tempDestination(dst), value.get(), m_operator);
generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
generator.emitPutByVal(base.get(), property.get(), value.get());
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(value.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(value.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return generator.moveToDestinationIfNeeded(dst, oldValue);
}
@@ -872,9 +872,9 @@
RegisterID* oldValue = emitPostIncOrDec(generator, generator.tempDestination(dst), value.get(), m_operator);
generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
generator.emitPutById(base.get(), ident, value.get());
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(value.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(value.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return generator.moveToDestinationIfNeeded(dst, oldValue);
}
@@ -992,13 +992,13 @@
if (local.isReadOnly()) {
generator.emitReadOnlyExceptionIfNeeded();
localReg = generator.emitMove(generator.tempDestination(dst), localReg);
- } else if (local.isCaptured() || generator.isProfilingTypesWithHighFidelity()) {
+ } else if (local.isCaptured() || generator.vm()->typeProfiler()) {
RefPtr<RegisterID> tempDst = generator.tempDestination(dst);
generator.emitMove(tempDst.get(), localReg);
emitIncOrDec(generator, tempDst.get(), m_operator);
generator.emitMove(localReg, tempDst.get());
- if (generator.isProfilingTypesWithHighFidelity())
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler())
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
return generator.moveToDestinationIfNeeded(dst, tempDst.get());
}
emitIncOrDec(generator, localReg, m_operator);
@@ -1010,9 +1010,9 @@
RefPtr<RegisterID> value = generator.emitGetFromScope(generator.newTemporary(), scope.get(), ident, ThrowIfNotFound);
emitIncOrDec(generator, value.get(), m_operator);
generator.emitPutToScope(scope.get(), ident, value.get(), ThrowIfNotFound);
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(value.get(), ProfileTypesBytecodePutToScope, &ident);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(value.get(), ProfileTypeBytecodePutToScope, &ident);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return generator.moveToDestinationIfNeeded(dst, value.get());
}
@@ -1033,9 +1033,9 @@
emitIncOrDec(generator, value, m_operator);
generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
generator.emitPutByVal(base.get(), property.get(), value);
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(value, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(value, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return generator.moveToDestinationIfNeeded(dst, propDst.get());
}
@@ -1055,9 +1055,9 @@
emitIncOrDec(generator, value, m_operator);
generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
generator.emitPutById(base.get(), ident, value);
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(value, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(value, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return generator.moveToDestinationIfNeeded(dst, propDst.get());
}
@@ -1506,15 +1506,15 @@
}
if (local.isCaptured()
- || generator.isProfilingTypesWithHighFidelity()
+ || generator.vm()->typeProfiler()
|| generator.leftHandSideNeedsCopy(m_rightHasAssignments, m_right->isPure(generator))) {
RefPtr<RegisterID> result = generator.newTemporary();
generator.emitMove(result.get(), local.get());
emitReadModifyAssignment(generator, result.get(), result.get(), m_right, m_operator, OperandTypes(ResultType::unknownType(), m_right->resultDescriptor()));
generator.emitMove(local.get(), result.get());
generator.invalidateForInContextForLocal(local.get());
- if (generator.isProfilingTypesWithHighFidelity())
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler())
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
return generator.moveToDestinationIfNeeded(dst, result.get());
}
@@ -1528,9 +1528,9 @@
RefPtr<RegisterID> value = generator.emitGetFromScope(generator.newTemporary(), scope.get(), m_ident, ThrowIfNotFound);
RefPtr<RegisterID> result = emitReadModifyAssignment(generator, generator.finalDestination(dst, value.get()), value.get(), m_right, m_operator, OperandTypes(ResultType::unknownType(), m_right->resultDescriptor()), this);
RegisterID* returnResult = generator.emitPutToScope(scope.get(), m_ident, result.get(), ThrowIfNotFound);
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(result.get(), ProfileTypesBytecodePutToScope, &m_ident);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(result.get(), ProfileTypeBytecodePutToScope, &m_ident);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return returnResult;
}
@@ -1544,13 +1544,13 @@
generator.emitReadOnlyExceptionIfNeeded();
return generator.emitNode(dst, m_right);
}
- if (local.isCaptured() || generator.isProfilingTypesWithHighFidelity()) {
+ if (local.isCaptured() || generator.vm()->typeProfiler()) {
RefPtr<RegisterID> tempDst = generator.tempDestination(dst);
generator.emitNode(tempDst.get(), m_right);
generator.emitMove(local.get(), tempDst.get());
generator.invalidateForInContextForLocal(local.get());
- if (generator.isProfilingTypesWithHighFidelity())
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler())
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
return generator.moveToDestinationIfNeeded(dst, tempDst.get());
}
RegisterID* result = generator.emitNode(local.get(), m_right);
@@ -1566,9 +1566,9 @@
RefPtr<RegisterID> result = generator.emitNode(dst, m_right);
generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
RegisterID* returnResult = generator.emitPutToScope(scope.get(), m_ident, result.get(), generator.isStrictMode() ? ThrowIfNotFound : DoNotThrowIfNotFound);
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(result.get(), ProfileTypesBytecodePutToScope, &m_ident);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(result.get(), ProfileTypeBytecodePutToScope, &m_ident);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return returnResult;
}
@@ -1583,9 +1583,9 @@
generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
RegisterID* forwardResult = (dst == generator.ignoredResult()) ? result : generator.moveToDestinationIfNeeded(generator.tempDestination(result), result);
generator.emitPutById(base.get(), m_ident, forwardResult);
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(forwardResult, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(forwardResult, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return generator.moveToDestinationIfNeeded(dst, forwardResult);
}
@@ -1602,9 +1602,9 @@
generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
RegisterID* ret = generator.emitPutById(base.get(), m_ident, updatedValue);
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(updatedValue, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(updatedValue, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return ret;
}
@@ -1628,9 +1628,9 @@
generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
RegisterID* forwardResult = (dst == generator.ignoredResult()) ? result : generator.moveToDestinationIfNeeded(generator.tempDestination(result), result);
generator.emitPutByVal(base.get(), property.get(), forwardResult);
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(forwardResult, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(forwardResult, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return generator.moveToDestinationIfNeeded(dst, forwardResult);
}
@@ -1648,9 +1648,9 @@
generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
generator.emitPutByVal(base.get(), property.get(), updatedValue);
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(updatedValue, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(updatedValue, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
return updatedValue;
@@ -1676,7 +1676,7 @@
return local.get();
// FIXME: Maybe call emitExpressionInfo here.
- if (local.isCaptured() || generator.isProfilingTypesWithHighFidelity()) {
+ if (local.isCaptured() || generator.vm()->typeProfiler()) {
RefPtr<RegisterID> tempDst = generator.newTemporary();
generator.emitNode(tempDst.get(), m_init);
return generator.emitMove(local.get(), tempDst.get());
@@ -1786,18 +1786,18 @@
RegisterID* EmptyVarExpression::emitBytecode(BytecodeGenerator& generator, RegisterID*)
{
- if (!generator.isProfilingTypesWithHighFidelity())
+ if (!generator.vm()->typeProfiler())
return nullptr;
if (Local local = generator.local(m_ident))
- generator.emitProfileTypesWithHighFidelity(local.get(), ProfileTypesBytecodeHasGlobalID, nullptr);
+ generator.emitProfileType(local.get(), ProfileTypeBytecodeHasGlobalID, nullptr);
else {
RefPtr<RegisterID> scope = generator.emitResolveScope(generator.newTemporary(), m_ident);
RefPtr<RegisterID> value = generator.emitGetFromScope(generator.newTemporary(), scope.get(), m_ident, DoNotThrowIfNotFound);
- generator.emitProfileTypesWithHighFidelity(value.get(), ProfileTypesBytecodeGetFromScope, &m_ident);
+ generator.emitProfileType(value.get(), ProfileTypeBytecodeGetFromScope, &m_ident);
}
- generator.emitHighFidelityTypeProfilingExpressionInfo(position(), JSTextPosition(-1, position().offset + m_ident.length(), -1));
+ generator.emitTypeProfilerExpressionInfo(position(), JSTextPosition(-1, position().offset + m_ident.length(), -1));
// It's safe to return null here because this node will always be a child node of VarStatementNode which ignores our return value.
return nullptr;
@@ -2276,9 +2276,9 @@
dst = 0;
RefPtr<RegisterID> returnRegister = m_value ? generator.emitNode(dst, m_value) : generator.emitLoad(dst, jsUndefined());
- if (generator.isProfilingTypesWithHighFidelity()) {
- generator.emitProfileTypesWithHighFidelity(returnRegister.get(), ProfileTypesBytecodeFunctionReturnStatement, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());
+ if (generator.vm()->typeProfiler()) {
+ generator.emitProfileType(returnRegister.get(), ProfileTypeBytecodeFunctionReturnStatement, nullptr);
+ generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd());
}
if (generator.scopeDepth()) {
returnRegister = generator.emitMove(generator.newTemporary(), returnRegister.get());
@@ -2607,15 +2607,15 @@
void FunctionBodyNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
{
- if (generator.isProfilingTypesWithHighFidelity()) {
+ if (generator.vm()->typeProfiler()) {
for (size_t i = 0; i < m_parameters->size(); i++) {
// FIXME: Handle Destructuring assignments into arguments.
if (!m_parameters->at(i)->isBindingNode())
continue;
BindingNode* parameter = static_cast<BindingNode*>(m_parameters->at(i));
RegisterID reg(CallFrame::argumentOffset(i));
- generator.emitProfileTypesWithHighFidelity(®, ProfileTypesBytecodeFunctionArgument, nullptr);
- generator.emitHighFidelityTypeProfilingExpressionInfo(parameter->divotStart(), parameter->divotEnd());
+ generator.emitProfileType(®, ProfileTypeBytecodeFunctionArgument, nullptr);
+ generator.emitTypeProfilerExpressionInfo(parameter->divotStart(), parameter->divotEnd());
}
}
@@ -2635,8 +2635,8 @@
// If there is no return we must automatically insert one.
if (!returnNode) {
RegisterID* r0 = generator.isConstructor() ? generator.thisRegister() : generator.emitLoad(0, jsUndefined());
- 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.
+ if (generator.vm()->typeProfiler())
+ generator.emitProfileType(r0, ProfileTypeBytecodeFunctionReturnStatement, nullptr); // Do not emit expression info for this profile because it's not in the user's source code.
ASSERT(startOffset() >= lineStartOffset());
generator.emitDebugHook(WillLeaveCallFrame, lastLine(), startOffset(), lineStartOffset());
generator.emitReturn(r0);