summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h')
-rw-r--r--Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h23
1 files changed, 17 insertions, 6 deletions
diff --git a/Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h b/Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h
index b22198a00..d34392121 100644
--- a/Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h
+++ b/Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013, 2015 Apple Inc. All rights reserved.
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -35,22 +35,33 @@ class BytecodeLivenessAnalysis;
typedef HashMap<unsigned, FastBitVector, WTF::IntHash<unsigned>, WTF::UnsignedWithZeroKeyHashTraits<unsigned>> BytecodeToBitmapMap;
class FullBytecodeLiveness {
- WTF_MAKE_FAST_ALLOCATED;
public:
- const FastBitVector& getLiveness(unsigned bytecodeIndex) const
+ FullBytecodeLiveness() : m_codeBlock(0) { }
+
+ // We say "out" to refer to the bitvector that contains raw results for a bytecode
+ // instruction.
+ const FastBitVector& getOut(unsigned bytecodeIndex) const
{
- return m_map[bytecodeIndex];
+ BytecodeToBitmapMap::const_iterator iter = m_map.find(bytecodeIndex);
+ ASSERT(iter != m_map.end());
+ return iter->value;
}
bool operandIsLive(int operand, unsigned bytecodeIndex) const
{
- return operandIsAlwaysLive(operand) || operandThatIsNotAlwaysLiveIsLive(getLiveness(bytecodeIndex), operand);
+ return operandIsAlwaysLive(m_codeBlock, operand) || operandThatIsNotAlwaysLiveIsLive(m_codeBlock, getOut(bytecodeIndex), operand);
+ }
+
+ FastBitVector getLiveness(unsigned bytecodeIndex) const
+ {
+ return getLivenessInfo(m_codeBlock, getOut(bytecodeIndex));
}
private:
friend class BytecodeLivenessAnalysis;
- Vector<FastBitVector, 0, UnsafeVectorOverflow> m_map;
+ CodeBlock* m_codeBlock;
+ BytecodeToBitmapMap m_map;
};
} // namespace JSC