summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/bytecode/StructureSet.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/bytecode/StructureSet.h')
-rw-r--r--Source/JavaScriptCore/bytecode/StructureSet.h23
1 files changed, 19 insertions, 4 deletions
diff --git a/Source/JavaScriptCore/bytecode/StructureSet.h b/Source/JavaScriptCore/bytecode/StructureSet.h
index bfc30fc3c..2bbc50cad 100644
--- a/Source/JavaScriptCore/bytecode/StructureSet.h
+++ b/Source/JavaScriptCore/bytecode/StructureSet.h
@@ -26,7 +26,7 @@
#ifndef StructureSet_h
#define StructureSet_h
-#include "PredictedType.h"
+#include "SpeculatedType.h"
#include "Structure.h"
#include <stdio.h>
#include <wtf/Vector.h>
@@ -90,6 +90,13 @@ public:
return false;
}
+ bool containsOnly(Structure* structure) const
+ {
+ if (size() != 1)
+ return false;
+ return singletonStructure() == structure;
+ }
+
bool isSubsetOf(const StructureSet& other) const
{
for (size_t i = 0; i < m_structures.size(); ++i) {
@@ -115,18 +122,26 @@ public:
return true;
}
+ // Call this if you know that the structure set must consist of exactly
+ // one structure.
+ Structure* singletonStructure() const
+ {
+ ASSERT(m_structures.size() == 1);
+ return m_structures[0];
+ }
+
Structure* at(size_t i) const { return m_structures.at(i); }
Structure* operator[](size_t i) const { return at(i); }
Structure* last() const { return m_structures.last(); }
- PredictedType predictionFromStructures() const
+ SpeculatedType speculationFromStructures() const
{
- PredictedType result = PredictNone;
+ SpeculatedType result = SpecNone;
for (size_t i = 0; i < m_structures.size(); ++i)
- mergePrediction(result, predictionFromStructure(m_structures[i]));
+ mergeSpeculation(result, speculationFromStructure(m_structures[i]));
return result;
}