summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.h')
-rw-r--r--Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.h19
1 files changed, 6 insertions, 13 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.h b/Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.h
index 201444c86..f0f2a46d5 100644
--- a/Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.h
+++ b/Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.h
@@ -26,6 +26,8 @@
#ifndef DFGInPlaceAbstractState_h
#define DFGInPlaceAbstractState_h
+#include <wtf/Platform.h>
+
#if ENABLE(DFG_JIT)
#include "DFGAbstractValue.h"
@@ -37,9 +39,8 @@
namespace JSC { namespace DFG {
class InPlaceAbstractState {
- WTF_MAKE_FAST_ALLOCATED;
public:
- InPlaceAbstractState(Graph&);
+ InPlaceAbstractState(Graph& graph);
~InPlaceAbstractState();
@@ -104,9 +105,6 @@ public:
// Did the last executed node clobber the world?
bool didClobber() const { return m_didClobber; }
- // Are structures currently clobbered?
- StructureClobberState structureClobberState() const { return m_structureClobberState; }
-
// Is the execution state still valid? This will be false if execute() has
// returned false previously.
bool isValid() const { return m_isValid; }
@@ -126,16 +124,11 @@ public:
// Methods intended to be called from AbstractInterpreter.
void setDidClobber(bool didClobber) { m_didClobber = didClobber; }
- void setStructureClobberState(StructureClobberState value) { m_structureClobberState = value; }
void setIsValid(bool isValid) { m_isValid = isValid; }
void setBranchDirection(BranchDirection branchDirection) { m_branchDirection = branchDirection; }
-
- // This method is evil - it causes a huge maintenance headache and there is a gross amount of
- // code devoted to it. It would be much nicer to just always run the constant folder on each
- // block. But, the last time we did it, it was a 1% SunSpider regression:
- // https://bugs.webkit.org/show_bug.cgi?id=133947
- // So, we should probably keep this method.
void setFoundConstants(bool foundConstants) { m_foundConstants = foundConstants; }
+ bool haveStructures() const { return m_haveStructures; } // It's always safe to return true.
+ void setHaveStructures(bool haveStructures) { m_haveStructures = haveStructures; }
private:
bool mergeStateAtTail(AbstractValue& destination, AbstractValue& inVariable, Node*);
@@ -147,11 +140,11 @@ private:
Operands<AbstractValue> m_variables;
BasicBlock* m_block;
+ bool m_haveStructures;
bool m_foundConstants;
bool m_isValid;
bool m_didClobber;
- StructureClobberState m_structureClobberState;
BranchDirection m_branchDirection; // This is only set for blocks that end in Branch and that execute to completion (i.e. m_isValid == true).
};