summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/dfg/DFGAtTailAbstractState.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/dfg/DFGAtTailAbstractState.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGAtTailAbstractState.cpp')
-rw-r--r--Source/JavaScriptCore/dfg/DFGAtTailAbstractState.cpp27
1 files changed, 18 insertions, 9 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGAtTailAbstractState.cpp b/Source/JavaScriptCore/dfg/DFGAtTailAbstractState.cpp
index ca770681a..8d14c9cba 100644
--- a/Source/JavaScriptCore/dfg/DFGAtTailAbstractState.cpp
+++ b/Source/JavaScriptCore/dfg/DFGAtTailAbstractState.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2013, 2016 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -25,29 +25,38 @@
#include "config.h"
#include "DFGAtTailAbstractState.h"
+#include "DFGBlockMapInlines.h"
#if ENABLE(DFG_JIT)
-#include "Operations.h"
+#include "JSCInlines.h"
namespace JSC { namespace DFG {
-AtTailAbstractState::AtTailAbstractState()
- : m_block(0)
+AtTailAbstractState::AtTailAbstractState(Graph& graph)
+ : m_graph(graph)
+ , m_valuesAtTailMap(m_graph)
{
+ for (BasicBlock* block : graph.blocksInNaturalOrder()) {
+ auto& valuesAtTail = m_valuesAtTailMap.at(block);
+ valuesAtTail.clear();
+ for (auto& valueAtTailPair : block->ssa->valuesAtTail)
+ valuesAtTail.add(valueAtTailPair.node, valueAtTailPair.value);
+ }
}
AtTailAbstractState::~AtTailAbstractState() { }
-void AtTailAbstractState::createValueForNode(Node* node)
+void AtTailAbstractState::createValueForNode(NodeFlowProjection node)
{
- m_block->ssa->valuesAtTail.add(node, AbstractValue());
+ m_valuesAtTailMap.at(m_block).add(node, AbstractValue());
}
-AbstractValue& AtTailAbstractState::forNode(Node* node)
+AbstractValue& AtTailAbstractState::forNode(NodeFlowProjection node)
{
- HashMap<Node*, AbstractValue>::iterator iter = m_block->ssa->valuesAtTail.find(node);
- ASSERT(iter != m_block->ssa->valuesAtTail.end());
+ auto& valuesAtTail = m_valuesAtTailMap.at(m_block);
+ HashMap<NodeFlowProjection, AbstractValue>::iterator iter = valuesAtTail.find(node);
+ DFG_ASSERT(m_graph, node.node(), iter != valuesAtTail.end());
return iter->value;
}