|
Lines 42-48
AbstractState::AbstractState(Graph& grap
Source/JavaScriptCore/dfg/DFGAbstractState.cpp_sec1
|
| 42 |
, m_graph(graph) |
42 |
, m_graph(graph) |
| 43 |
, m_variables(m_codeBlock->numParameters(), graph.m_localVars) |
43 |
, m_variables(m_codeBlock->numParameters(), graph.m_localVars) |
| 44 |
, m_block(0) |
44 |
, m_block(0) |
| 45 |
, m_currentNode(0) |
|
|
| 46 |
{ |
45 |
{ |
| 47 |
} |
46 |
} |
| 48 |
|
47 |
|
|
Lines 90-96
void AbstractState::beginBasicBlock(Basi
Source/JavaScriptCore/dfg/DFGAbstractState.cpp_sec2
|
| 90 |
m_isValid = true; |
89 |
m_isValid = true; |
| 91 |
m_foundConstants = false; |
90 |
m_foundConstants = false; |
| 92 |
m_branchDirection = InvalidBranchDirection; |
91 |
m_branchDirection = InvalidBranchDirection; |
| 93 |
m_currentNode = 0; |
|
|
| 94 |
} |
92 |
} |
| 95 |
|
93 |
|
| 96 |
static void setLiveValues(HashMap<Node*, AbstractValue>& values, HashSet<Node*>& live) |
94 |
static void setLiveValues(HashMap<Node*, AbstractValue>& values, HashSet<Node*>& live) |
|
Lines 262-268
void AbstractState::reset()
Source/JavaScriptCore/dfg/DFGAbstractState.cpp_sec3
|
| 262 |
m_block = 0; |
260 |
m_block = 0; |
| 263 |
m_isValid = false; |
261 |
m_isValid = false; |
| 264 |
m_branchDirection = InvalidBranchDirection; |
262 |
m_branchDirection = InvalidBranchDirection; |
| 265 |
m_currentNode = 0; |
|
|
| 266 |
} |
263 |
} |
| 267 |
|
264 |
|
| 268 |
AbstractState::BooleanResult AbstractState::booleanResult(Node* node, AbstractValue& value) |
265 |
AbstractState::BooleanResult AbstractState::booleanResult(Node* node, AbstractValue& value) |
|
Lines 295-307
bool AbstractState::startExecuting(Node*
Source/JavaScriptCore/dfg/DFGAbstractState.cpp_sec4
|
| 295 |
|
292 |
|
| 296 |
node->setCanExit(false); |
293 |
node->setCanExit(false); |
| 297 |
|
294 |
|
| 298 |
if (!node->shouldGenerate()) { |
295 |
return node->shouldGenerate(); |
| 299 |
m_currentNode = 0; |
|
|
| 300 |
return false; |
| 301 |
} |
| 302 |
|
| 303 |
m_currentNode = node; |
| 304 |
return true; |
| 305 |
} |
296 |
} |
| 306 |
|
297 |
|
| 307 |
bool AbstractState::startExecuting(unsigned indexInBlock) |
298 |
bool AbstractState::startExecuting(unsigned indexInBlock) |
|
Lines 1747-1752
inline void AbstractState::clobberStruct
Source/JavaScriptCore/dfg/DFGAbstractState.cpp_sec5
|
| 1747 |
return; |
1738 |
return; |
| 1748 |
for (size_t i = indexInBlock + 1; i--;) |
1739 |
for (size_t i = indexInBlock + 1; i--;) |
| 1749 |
forNode(m_block->at(i)).clobberStructures(); |
1740 |
forNode(m_block->at(i)).clobberStructures(); |
|
|
1741 |
if (m_graph.m_form == SSA) { |
| 1742 |
HashSet<Node*>::iterator iter = m_block->ssa->liveAtHead.begin(); |
| 1743 |
HashSet<Node*>::iterator end = m_block->ssa->liveAtHead.end(); |
| 1744 |
for (; iter != end; ++iter) |
| 1745 |
forNode(*iter).clobberStructures(); |
| 1746 |
} |
| 1750 |
for (size_t i = m_variables.numberOfArguments(); i--;) |
1747 |
for (size_t i = m_variables.numberOfArguments(); i--;) |
| 1751 |
m_variables.argument(i).clobberStructures(); |
1748 |
m_variables.argument(i).clobberStructures(); |
| 1752 |
for (size_t i = m_variables.numberOfLocals(); i--;) |
1749 |
for (size_t i = m_variables.numberOfLocals(); i--;) |
|
Lines 1959-1976
inline bool AbstractState::mergeVariable
Source/JavaScriptCore/dfg/DFGAbstractState.cpp_sec6
|
| 1959 |
|
1956 |
|
| 1960 |
void AbstractState::dump(PrintStream& out) |
1957 |
void AbstractState::dump(PrintStream& out) |
| 1961 |
{ |
1958 |
{ |
| 1962 |
bool first = true; |
1959 |
CommaPrinter comma(" "); |
|
|
1960 |
if (m_graph.m_form == SSA) { |
| 1961 |
HashSet<Node*>::iterator iter = m_block->ssa->liveAtHead.begin(); |
| 1962 |
HashSet<Node*>::iterator end = m_block->ssa->liveAtHead.end(); |
| 1963 |
for (; iter != end; ++iter) { |
| 1964 |
Node* node = *iter; |
| 1965 |
AbstractValue& value = forNode(node); |
| 1966 |
if (value.isClear()) |
| 1967 |
continue; |
| 1968 |
out.print(comma, node, ":", value); |
| 1969 |
} |
| 1970 |
} |
| 1963 |
for (size_t i = 0; i < m_block->size(); ++i) { |
1971 |
for (size_t i = 0; i < m_block->size(); ++i) { |
| 1964 |
Node* node = m_block->at(i); |
1972 |
Node* node = m_block->at(i); |
| 1965 |
AbstractValue& value = forNode(node); |
1973 |
AbstractValue& value = forNode(node); |
| 1966 |
if (value.isClear()) |
1974 |
if (value.isClear()) |
| 1967 |
continue; |
1975 |
continue; |
| 1968 |
if (first) |
1976 |
out.print(comma, node, ":", value); |
| 1969 |
first = false; |
|
|
| 1970 |
else |
| 1971 |
out.printf(" "); |
| 1972 |
out.printf("@%lu:", static_cast<unsigned long>(node->index())); |
| 1973 |
value.dump(out); |
| 1974 |
} |
1977 |
} |
| 1975 |
} |
1978 |
} |
| 1976 |
|
1979 |
|