[webkit-reviews] review requested: [Bug 133395] Web Inspector: debugger should be able to show variable types : [Attachment 234237] patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Jul 1 20:34:06 PDT 2014


Saam Barati <sbarati at apple.com> has asked  for review:
Bug 133395: Web Inspector: debugger should be able to show variable types
https://bugs.webkit.org/show_bug.cgi?id=133395

Attachment 234237: patch
https://bugs.webkit.org/attachment.cgi?id=234237&action=review

------- Additional Comments from Saam Barati <sbarati at apple.com>
2014-07-01  Saam Barati  <sbarati at apple.com>

	Web Inspector: debugger should be able to show variable types
	https://bugs.webkit.org/show_bug.cgi?id=133395

	Reviewed by NOBODY (OOPS!).

	More operations are now being recorded by the
profile_types_with_high_fidelity 
	opcode. Specifically: function parameters, function return values,
	function 'this' value, get_by_id, get_by_value, resolve nodes, function
return 
	values at the call site. Added more flags to the
profile_types_with_high_fidelity
	opcode so more focused tasks can take place when the instruction is
	being linked in CodeBlock. Re-worked the type profiler to search 
	through character offset ranges when asked for the type of an
expression
	at a given offset. Removed redundant calls to
Structure::toStructureShape
	in HighFidelityLog and TypeSet by caching calls based on StructureID.

	* bytecode/BytecodeList.json:
	* bytecode/BytecodeUseDef.h:
	(JSC::computeUsesForBytecodeOffset):
	(JSC::computeDefsForBytecodeOffset):
	* bytecode/CodeBlock.cpp:
	(JSC::CodeBlock::CodeBlock):
	(JSC::CodeBlock::finalizeUnconditionally):
	(JSC::CodeBlock::scopeDependentProfile):
	* bytecode/CodeBlock.h:
	(JSC::CodeBlock::returnStatementTypeSet):
	* bytecode/TypeLocation.h:
	* bytecode/UnlinkedCodeBlock.cpp:
       
(JSC::UnlinkedCodeBlock::highFidelityTypeProfileExpressionInfoForBytecodeOffset
):
	(JSC::UnlinkedCodeBlock::addHighFidelityTypeProfileExpressionInfo):
	* bytecode/UnlinkedCodeBlock.h:
	* bytecompiler/BytecodeGenerator.cpp:
	(JSC::BytecodeGenerator::emitMove):
	(JSC::BytecodeGenerator::emitProfileTypesWithHighFidelity):
	(JSC::BytecodeGenerator::emitGetFromScopeWithProfile):
	(JSC::BytecodeGenerator::emitPutToScope):
	(JSC::BytecodeGenerator::emitPutToScopeWithProfile):
	(JSC::BytecodeGenerator::emitPutById):
	(JSC::BytecodeGenerator::emitPutByVal):
	* bytecompiler/BytecodeGenerator.h:
	(JSC::BytecodeGenerator::emitHighFidelityTypeProfilingExpressionInfo):
	* bytecompiler/NodesCodegen.cpp:
	(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::ReturnNode::emitBytecode):
	(JSC::FunctionBodyNode::emitBytecode):
	* inspector/agents/InspectorRuntimeAgent.cpp:
	(Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableAtOffset):
       
(Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableInTextRange):
Deleted.
	* inspector/agents/InspectorRuntimeAgent.h:
	* inspector/protocol/Runtime.json:
	* llint/LLIntSlowPaths.cpp:
	(JSC::LLInt::getFromScopeCommon):
	(JSC::LLInt::LLINT_SLOW_PATH_DECL):
	* llint/LLIntSlowPaths.h:
	* llint/LowLevelInterpreter.asm:
	* runtime/HighFidelityLog.cpp:
	(JSC::HighFidelityLog::processHighFidelityLog):
	(JSC::HighFidelityLog::actuallyProcessLogThreadFunction):
	(JSC::HighFidelityLog::recordTypeInformationForLocation): Deleted.
	* runtime/HighFidelityLog.h:
	(JSC::HighFidelityLog::recordTypeInformationForLocation):
	* runtime/HighFidelityTypeProfiler.cpp:
	(JSC::HighFidelityTypeProfiler::getTypesForVariableInAtOffset):
	(JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableAtOffset):
	(JSC::HighFidelityTypeProfiler::getLocalTypesForVariableAtOffset):
	(JSC::HighFidelityTypeProfiler::insertNewLocation):
	(JSC::HighFidelityTypeProfiler::findLocation):
	(JSC::HighFidelityTypeProfiler::getTypesForVariableInRange): Deleted.
	(JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableInRange):
Deleted.
	(JSC::HighFidelityTypeProfiler::getLocalTypesForVariableInRange):
Deleted.
	(JSC::HighFidelityTypeProfiler::getLocationBasedHash): Deleted.
	* runtime/HighFidelityTypeProfiler.h:
	(JSC::LocationKey::LocationKey): Deleted.
	(JSC::LocationKey::hash): Deleted.
	(JSC::LocationKey::operator==): Deleted.
	* runtime/Structure.h:
	* runtime/TypeSet.cpp:
	(JSC::TypeSet::TypeSet):
	(JSC::TypeSet::addTypeForValue):
	(JSC::TypeSet::seenTypes):
	(JSC::TypeSet::removeDuplicatesInStructureHistory): Deleted.
	* runtime/TypeSet.h:
	* runtime/VM.cpp:
	(JSC::VM::getTypesForVariableAtOffset):
	(JSC::VM::dumpHighFidelityProfilingTypes):
	(JSC::VM::getTypesForVariableInRange): Deleted.
	* runtime/VM.h:


More information about the webkit-reviews mailing list