diff options
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.h')
| -rw-r--r-- | Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.h | 19 |
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). }; |
