summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/dfg/DFGAbstractValue.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-11-22 09:09:45 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-22 09:10:13 +0100
commit470286ecfe79d59df14944e5b5d34630fc739391 (patch)
tree43983212872e06cebefd2ae474418fa2908ca54c /Source/JavaScriptCore/dfg/DFGAbstractValue.h
parent23037105e948c2065da5a937d3a2396b0ff45c1e (diff)
downloadqtwebkit-470286ecfe79d59df14944e5b5d34630fc739391.tar.gz
Imported WebKit commit e89504fa9195b2063b2530961d4b73dd08de3242 (http://svn.webkit.org/repository/webkit/trunk@135485)
Change-Id: I03774e5ac79721c13ffa30d152537a74d0b12e66 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGAbstractValue.h')
-rw-r--r--Source/JavaScriptCore/dfg/DFGAbstractValue.h26
1 files changed, 25 insertions, 1 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGAbstractValue.h b/Source/JavaScriptCore/dfg/DFGAbstractValue.h
index c198b5e52..c60b792f6 100644
--- a/Source/JavaScriptCore/dfg/DFGAbstractValue.h
+++ b/Source/JavaScriptCore/dfg/DFGAbstractValue.h
@@ -284,6 +284,21 @@ struct AbstractValue {
checkConsistency();
}
+ bool filterByValue(JSValue value)
+ {
+ if (!validate(value))
+ return false;
+
+ if (!!value && value.isCell())
+ filter(StructureSet(value.asCell()->structure()));
+ else
+ filter(speculationFromValue(value));
+
+ m_value = value;
+
+ return true;
+ }
+
bool validateType(JSValue value) const
{
if (isTop())
@@ -327,6 +342,15 @@ struct AbstractValue {
return true;
}
+ Structure* bestProvenStructure() const
+ {
+ if (m_currentKnownStructure.hasSingleton())
+ return m_currentKnownStructure.singleton();
+ if (m_futurePossibleStructure.hasSingleton())
+ return m_futurePossibleStructure.singleton();
+ return 0;
+ }
+
void checkConsistency() const
{
if (!(m_type & SpecCell)) {
@@ -351,7 +375,7 @@ struct AbstractValue {
{
fprintf(out, "(%s, %s, ", speculationToString(m_type), arrayModesToString(m_arrayModes));
m_currentKnownStructure.dump(out);
- dataLog(", ");
+ dataLogF(", ");
m_futurePossibleStructure.dump(out);
if (!!m_value)
fprintf(out, ", %s", m_value.description());